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 编辑过 |
关键字查询
相关文章
正在查询... |