我在幾個地方看過.GetAwaiter().GetResult();
可能導致死鎖,我們應該使用async
/await
來代替。但是我看到很多代碼示例在這裏使用。可以使用它嗎?哪種情況下可能發生死鎖?有什麼我應該使用的,如Task.Wait
?Is .GetAwaiter()。GetResult();一般使用安全嗎?
13
A
回答
23
正如我在我的博客上描述的,GetAwaiter().GetResult()
can deadlock when it's used in a one-thread-at-a-time context。這是在UI線程或ASP.NET上下文中調用時(對於核心ASP.NET之前)最常見的。
Wait
也有同樣的問題。適當的修復方法是使用await
,並使調用代碼異步。
請注意,Console應用程序中的Main
方法是此規則的一個例外;在那裏使用是完全合適的。許多代碼示例以這種方式使用它。
相關問題
- 1. IS ResultSet線程安全
- 2. 什麼是「聲明式安全」?一般
- 3. 使用Capistrano安全嗎?
- 4. 使用window.screen安全嗎?
- 5. 使用MD5不安全嗎?
- 6. 使用cstdarg安全嗎?
- 7. 使用代理安全嗎?
- 8. 使用ComputedProperty安全嗎?
- 9. 使用SET ROWCOUNT安全嗎?
- 10. 要使用shared_ptr,安全嗎?
- 11. 使用Parse.Object.attributes安全嗎?
- 12. IS Json_encode()比PHP中的序列化更安全嗎?
- 13. 春季安全SAML與wso2 IS
- 14. sql server 2005:使用@@身份安全嗎?
- 15. UuidCreateSequential和p/invoke調用的線程安全性一般
- 16. printf:這安全嗎?
- 17. 一般github使用
- 18. JQuery安全嗎?
- 19. TempData:安全嗎?
- 20. 「User.Identity.Name」安全嗎?
- 21. FormsAuthentication:安全嗎?
- 22. 使用mod_rewrite B標誌安全嗎?
- 23. 使用esp下的堆棧安全嗎?
- 24. 這是使用Parallel.ForEach()線程安全嗎?
- 25. 使用paypal html api是安全的嗎?
- 26. 使用open打開鏈接安全嗎
- 27. 使用錨提交表單安全嗎?
- 28. 可以安全使用dompdf + file_get_contents嗎?
- 29. 在H2中使用'FILE_LOCK = NO'安全嗎?
- 30. PHP:使用index.php作爲bootstrap安全嗎?
太廣泛,重複的話題。開始搜索SO –