ASP.NETで、asp.netで、await/asyncを使用する場合
タスクを待つとき、メソッドは通常、キャプチャされた同期コンテキストで復元されます(存在がない場合は、タスクシェードラーです)。これは、非同期コントローラー操作の予想される動作と一致しています。
テストケース5の問題test5controller.getは、次の順序によって引き起こされますasp.netリクエストのコンテキストでhttpclient.getasyncを呼び出します。
httpclient.getasync httpリクエストを送信し、未完成のタスクを返します。 asyncawait_getsomedataasyncはタスクを待ち、リクエストがまだ進行中であるため、未完成のタスクを返します。
test5controller.getは、タスクがAsyncawait_getsomedataasyncによって返されるまで現在のスレッドをブロックします。
結論
同期コンテキストの役割とAsync/awaitテクノロジーを使用したベストプラクティスの理解では、ASP.NETで非同期コードを使用して効率的に使用し、非同期コードを使用するときにデッドロックを持たないようにすることができます。
以上がASP.NET で Await/Async を使用すると HttpClient.GetAsync 呼び出しがハングするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。