簡単な例を投稿しましょう。
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