非同期C#メソッドを同期的に実行する
メソッド1:public async Task Foo()
Task.WaitAndUnwrapException
を使用しているもの)については、
ConfigureAwait(false)
Task.WaitAndUnwrapException
これは、
<code class="language-csharp">var task = MyAsyncMethod(); var result = task.WaitAndUnwrapException();</code>
メソッド2:AggregateException
MyAsyncMethod
AsyncContext.RunTask
これにより、これにより、使用しないタスクで待機をブロックすることで発生する可能性のあるデッドロックが効果的に防止されます。
AsyncContext.RunTask
<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>
このアプローチでは、ConfigureAwait(false)
がスレッドセーフであり、UI要素やASP.NET要求のコンテキストに依存しないことが要求されます。 または、メソッド1で
Task.Run
以上が非同期C#メソッドを同期して呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。