我有一个简单的代码:
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
我错过了什么?