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