如果使用异步声明的异步方法的返回类型为任务或任务
private static async Task<int> AsyncDemo()
{
await Task.Delay(1000);
return 1;
}
生成的 IL 代码返回启动已编译状态机的 AsyncTaskMethodBuilder 的任务。我的问题是这项任务实际上代表什么。我假设这是一个任务,它不代表一个线程左右,而是代表状态机的执行。我还假设任务在状态机完成时完成,或者在发生异常时设置为故障状态。我希望澄清。
概念上表示方法。
当该方法返回时,任务完成(成功),结果设置为方法返回的值(如果适用)。如果该方法引发异常,则任务出错(已完成但出现错误)。OperationCanceledException
有一个特殊情况:在这种情况下,任务被取消(完成并取消)。
从技术上讲,该任务确实表示状态机,这是对方法的重写。但由于状态机是隐藏的,因此任务在概念上表示方法本身。