[英]Async/await: Making method async
我试图做一个简单的例子,但我什至没有基础。 此代码有什么问题? 想象一下Calculate()
需要几秒钟。
static void Main(string[] args)
{
int result = await Calculate();
Console.WriteLine(result);
Console.ReadLine();
}
static async Task<int> Calculate()
{
return 1;
}
只需将您的main更改为:
static void Main(string[] args)
{
int result = Calculate().Result;
Console.WriteLine(result);
Console.ReadLine();
}
一旦使用await
关键字,就必须将周围的方法标记为async
,因为其他方法无法使用Main
。 由于诸如Calculate
类的async
方法仍会返回良好的旧Task
对象,因此可以随意使用“旧”方法来处理它们:使用Result
等待结果。 当然这是一个阻塞操作-但是没有理由在Main
内部不阻塞,对吗? ;)
你可以这样做:
static void Main()
{
WrapMain();
}
static async void WrapMain()
{
int result = await Calculate();
Console.WriteLine(result);
Console.ReadLine();
}
static async Task<int> Calculate()
{
return await Task.Run(() =>
{
return 1;
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.