>在C#await
.Result
中使用和
由於對C#中異步編程的基本誤解,您的測試懸而未決。讓我們澄清問題。 CheckStatus().Result
在c# 中的異步操作
>異步編程允許操作同時運行而無需阻止主線程。和async
是在C#。 await
中促進此功能的關鍵字
await
暫停>>
await
>
但是,Aasync
>對象的
>同步。這意味著呼叫線程被阻止,直到任務完成為止。 當與.Result
>不當使用時,這種阻止行為是僵局的根本原因
.Result
Task
在您的失敗測試中, await
方法的同步執行。 在完成之前,嘗試了另一個
失敗了,因為第一個調用(通過)仍在阻止線程,創建僵局。
CheckStatus().Result
async
>防止死鎖,始終使用await CheckStatus()
來處理await
>方法的結果。避免直接致電.Result
。這樣可以確保異步操作進行而不會阻止線程。
以上是為什麼在``異步任務''任務上稱呼' .result”會導致C#中的死鎖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!