如何在Main中调用异步方法?
public class test{
public async Task Go()
{
await PrintAnswerToLife();
Console.WriteLine("done");
}
public async Task PrintAnswerToLife()
{
int answer = await GetAnswerToLife();
Console.WriteLine(answer);
}
public async Task<int> GetAnswerToLife()
{
await Task.Delay(5000);
int answer = 21 * 2;
return answer;
}
}
如果我想在main()方法中调用Go,该怎么办?我正在尝试C#的新功能,我知道我可以将异步方法挂接到事件上,并通过触发该事件,可以调用异步方法。
但是,如果我想直接在main方法中调用它怎么办?我怎样才能做到这一点?
我做了类似的事情
class Program{
static void Main(string[] args)
{
test t = new test();
t.Go().GetAwaiter().OnCompleted(() =>
{
Console.WriteLine("finished");
});
Console.ReadKey();
}
}
但是似乎这是一个死锁,屏幕上没有任何内容。
回答:
您的Main
方法可以简化。对于C#7.1及更高版本:
static async Task Main(string[] args){
test t = new test();
await t.Go();
Console.WriteLine("finished");
Console.ReadKey();
}
对于早期版本的C#:
static void Main(string[] args){
test t = new test();
t.Go().Wait();
Console.WriteLine("finished");
Console.ReadKey();
}
这是async
关键字(及相关功能)之美的一部分:大大减少或消除了回调的使用和混乱。
以上是 如何在Main中调用异步方法? 的全部内容, 来源链接: utcz.com/qa/429463.html