我有这个简单的代码:
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
?
嗯,不可能是因为有编译错误:
入口点不能用“异步”修饰符标记
如果我理解异步的东西,线程将进入Main
函数SumTwoOperationsAsync
→→将调用这两个函数并退出。但直到SumTwoOperationsAsync
我错过了什么?