如果使用 async 声明的异步方法具有 Task 或 Task<TResult> 的返回类型,则可以等待它。在该方法内部,C# 代码中不会返回任何任务,但如果是 Task<TResult>,则返回 TResult 的值。例如:
private static async Task<int> AsyncDemo()
{
await Task.Delay(1000);
return 1;
}
生成的 IL 代码返回启动已编译状态机的 AsyncTaskMethodBuilder 的任务。我的问题是这个任务实际上代表了什么。我认为这是一个不代表线程左右的任务,而是状态机的执行。我还假设任务在状态机完成时完成,或者在发生异常时设置为故障状态。我感谢澄清。