最佳答案
我有一个简单的代码:
public static async Task<int> SumTwoOperationsAsync()
{
var firstTask = GetOperationOneAsync();
var secondTask = GetOperationTwoAsync();
return await firstTask + await secondTask;
}
private async Task<int> GetOperationOneAsync()
{
await Task.Delay(500); // Just to simulate an operation taking time
return 10;
}
private async Task<int> GetOperationTwoAsync()
{
await Task.Delay(100); // Just to simulate an operation taking time
return 5;
}
太好了。这个编译。
但假设我有一个控制台应用程序,我想运行上面的代码(调用SumTwoOperationsAsync()
)。
static void Main(string[] args)
{
SumTwoOperationsAsync();
}
但是我读过(当使用sync
时),我必须同步向上和下来:
这是否意味着我的Main
函数应该被标记为async
?
嗯,它不能是因为有一个编译错误:
入口点不能用'async'修饰符标记
如果我理解异步的东西,线程将进入Main
函数→SumTwoOperationsAsync
→将调用这两个函数并将退出。但直到SumTwoOperationsAsync
我错过了什么?