私が取り組んでいる単純なasync例があり、期待どおりに実行が呼び出し元に返されません。awaitトップレベルのメソッドは次のとおりです。
protected async void MyDDL_SelectedIndexChanged(object sender, EventArgs e)
{
  Task longRunningTask = LongRunningOperationAsync();
  DoOtherStuff1();
  DoOtherStuff2();
  DoOtherStuff3();
  await longRunningTask;
}
LongRunningOperationAsync期待どおりに動作せず、同期的に実行されるメソッドを次に示します。
 private async Task LongRunningOperationAsync()
 {
   var myValues = await GetStuffViaLongRunningTask();
   //Code to work with myValues here...
 }
の定義は次のとおりです。GetStuffViaLongRunningTask
private async Task<IList<MyClass>> GetStuffViaLongRunningTask()
{
    //...Calls to get and build up IList<MyClass>
    return results;
}
問題は、上記のコードが呼び出し元に戻らずDoOtherStuff1();、期待どおりにメソッドの実行を開始しないことです。await Task.Delay(10000);ただし、独自のメソッドを呼び出して、すべての単純な例が示すように呼び出しに置き換える代わりに、コードは期待どおりに機能します。
 private async Task LongRunningOperationAsync()
 {
   //Returns to caller as expected:
   await Task.Delay(10000);
 }
上記のコードを使用している呼び出し元はlongRunningTask、WaitingForActivationステータスが ではなく でありRanToCompletion、まだ処理中であることを示しています。
私のGetStuffViaLongRunningTask()方法は非常に速く実行され、結果が表示されないだけだと言うかもしれません。ただし、実行には常に 3 ~ 7 秒かかるため、デバッグ時に、呼び出しがブロックされ、同期されていることがわかります。
そのメソッド内で呼び出す単語LongRunningOperationAsync()に到達したときに、への呼び出しが非同期に機能しないように、ここで間違って何をしていますか?awaitLongRunningOperationAsync