の同期メソッドで非同期メソッドを呼び出す 同期コードで非同期メソッドを呼び出す(通常は非同期修正シンボルロゴ)は、一般的な開発問題です。非同期プログラミングは、UI応答を維持しながらCEOの操作を長時間実行できますが、通常、既存の同期方法と一致しないコード構造を調整する必要があります。
プラン1:task.waitandunwrapexception
非同期法(myasyncmedhod)がコンテキストを同期する必要なく独立して実行できる場合、task.waitandunwrapexceptionを使用して簡単なソリューションを提供できます。 ただし、task.waitまたはtask.resultを使用する場合は、AggregateExceptionで異常なパッケージを梱包するときに注意する必要があります。
プラン2:asynccontext.runtask
<code class="language-csharp">var task = MyAsyncMethod(); var result = task.WaitAndUnwrapException();</code>
または、myasyncmedhodをコンテキストと同期する必要がある場合、asynccontext.runtaskはネストされたコンテキストの方法を提供します。
プラン3:task.run
場合によっては、UIイベントに依存する非同期方法など、Asynccontext.runtaskが制限される場合があります。この場合、スレッドプールで非同期メソッドを実行できます:
<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>この方法では、MyasyncMethodがUI要素の更新やASP.NET要求のコンテキストアクセスの制限など、スレッドプールのコンテキストと互換性があることが必要であることに注意してください。
以上がC#の同期メソッドから非同期メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。