非同期メソッドを同期的に呼び出す
タスクを返す非同期メソッド、たとえば GenerateCodeAsync()
があるとします。このメソッドを同期的に呼び出すには、同期コードと非同期コードを調整する方法を見つける必要があります。
1 つの解決策は、スレッド プール スレッドで非同期メソッドを実行し、awaiter
を使用して操作が完了するまでスレッドをブロックすることです。
<code class="language-csharp">string code = Task.Run(() => GenerateCodeAsync()).GetAwaiter().GetResult();</code>
.Result を直接使用する場合の欠点
プロパティへの直接アクセスでは、次の結果が生じる可能性があります: Result
Result
AggregateException
メソッド: GetAwaiter().GetResult()
以上がC# でデッドロックを発生させずに非同期メソッドを同期的に呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。