异步等待
async
方法可以返回 void
,Task
或 Task<T>
。
返回类型 Task
将等待方法完成,结果将是 void
。Task<T>
将在方法完成后从 T
类型返回一个值。
在几乎所有情况下,async
方法应该返回 Task
或 Task<T>
,而不是 void
。async void
方法无法进行,这会导致各种问题。async
应该返回 void
的唯一情况是事件处理程序。
async
/ await
通过将你的 async
方法转换为状态机来工作。它通过在幕后创建存储当前状态和任何上下文(如局部变量)的结构来实现这一点,并在等待等待等待完成时公开 MoveNext()
方法以推进状态(并运行任何相关代码)。