让我发布一个简单的例子:
private void MyMethod()
{
Task task = MyAsyncMethod();
task.Wait();
}
private async Task MyAsyncMethod()
{
//Code before await
await MyOtherAsyncMethod();
//Code after await
}
假设我在单线程应用程序(如控制台应用程序)中运行上述代码。我很难理解代码如何//Code after await
运行。
我知道当我点击控制中的await
关键字时MyAsyncMethod()
会回到MyMethod()
,但随后我将使用 . 锁定线程task.Wait()
。//Code after await
如果线程被锁定,如果应该接受它
的线程被锁定,怎么能运行?
是否创建了一个新线程来运行//Code after await
?还是主线程神奇地退出task.Wait()
运行//Code after await
?
我不确定这应该如何工作?