让我发布一个简单的例子:
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?
我不确定这应该如何工作?