<分区>
当正在运行的线程遇到 await
时,内部使用什么机制来“标记”该特定方法最终需要在等待的任务完成时恢复?
考虑以下方法:
public async void DoSomething()
{
await Task.Run(() => SomeLongRunningWork());
// Code to resume when the task is done...
Console.WriteLine("Resuming...");
}
当达到上面的await
时,线程池中的一个线程被用来做长时间运行的工作。
此外,调用线程会立即退出 DoSomething() 方法,并在任务完成后“返回”。
调用线程如何知道如何在某个时刻“返回”?内部正在发生什么来实现这一目标?