C#await
.Result
でおよび
テストはCheckStatus().Result
にかかっています。問題を明確にしましょう。
での非同期操作 非同期プログラミングにより、メインスレッドをブロックせずに操作を同時に実行できます。
およびは、これをc#。async
で促進するキーワードです。
await
await
の役割
メソッド内で実行を一時停止します。重要なことに、メインスレッドはブロックされていないままで、他のコードが実行できるようにします。
await
async
の落とし穴
ただし、.Result
オブジェクトのプロパティは、結果を同期的に取得します
。
.Result
Task
デッドロックシナリオ
await
障害のあるテストでは、
が試みられます。最初の呼び出し(経由)がまだスレッドをブロックしているため、デッドロックを作成しているため、この2番目のは失敗します。
正しいアプローチCheckStatus().Result
async
await CheckStatus()
デッドロックを防ぐために、await
メソッドの結果を処理するために.Result
を一貫して使用します。直接
以上がなぜ「Async」タスクで「.result」を呼ぶのは、C#のデッドロックにつながるのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。