C# 異步與Windows應用程序
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在Task上一起使用Wait和async關(guān)鍵字是很危險的。在使用同步化上下文的應用程序中,這很容易導致死鎖。 在按鈕點擊事件中,調(diào)用本地函數(shù)DelayAsync。DelayAsync等待Task.Delay的完成,之后在前臺線程中繼續(xù)執(zhí)行。但是,調(diào)用者在DelayAsync返回的任務上調(diào)用Wait()方法。Wait()方法阻塞調(diào)用線程,直到任務完成。在這種情況下,Wait()是從前臺線程上調(diào)用的,因此Wait()會阻塞前臺線程。Task.Delay上的Wait()永遠無法完成,因為前臺線程不可用。這是一個經(jīng)典的死鎖場景: 但你可以修改上下文,這樣就不會發(fā)生死鎖情況: 在UI中使用異步時,不建議使用Wait,建議像“演示一” 使用異步。 閱讀原文:原文鏈接 該文章在 2025/2/13 8:44:10 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |