如何在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

回到顶部