非同期メソッドを処理する場合、同期して実行する必要がある場合があります。ただし、同期実行には2つの一般的な方法があります:と
異常をに詰め込み、は元の異常を直接投げます。 提案 さまざまな理由
の異常な治療の違いは、Microsoftの厳格な互換性要件に由来しています。既存のコードの破壊を避けるために、 を使用できます。 は、実行のブロックをブロックする代わりにタスクエラーを確認することに注意してください。 Task.Result
task.wait and task.getAwaiter()getResult()
Task.GetAwaiter().GetResult()
およびTask.Wait
Task.GetAwaiter().GetResult()
Task.Wait
元の異常を直接処理するために、AggregateException
よりも優れています。ただし、両方の方法は可能な限り回避する必要がありますが、最初の2つは死んだロックと糸プールのリソースの消耗を引き起こす可能性があるため、Task.GetAwaiter().GetResult()
を好むはずです。 Task.GetAwaiter().GetResult()
は元のブロッキング動作を維持し、異常をTask.Wait
に詰め込みます。 async/await
以上がtask.Result vs. task.getAwaiter()。getResult():同期実行と例外処理の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。