【发布时间】:2011-12-03 14:52:07
【问题描述】:
我有一些任务会冻结 UI 几秒钟,在这种特定情况下,我别无选择,只能从 UI 线程执行它(通常我使用 Dispatchers)。
我完全明白我的窗口在这段时间内无法重新绘制自己,但是在执行阻塞调用之前如何强制鼠标指针重新绘制自己?现在我做:
Me.Cursor = System.Windows.Input.Cursors.Wait
[Heavy Task]
Me.Cursor = System.Windows.Input.Cursors.Default
但是窗口没有将光标更新为等待光标,因为 UI 线程被冻结了?如何强制更新?
【问题讨论】:
-
重新考虑在 UI 线程上执行任务
-
@FactorMystic 你读过我写的东西吗?
-
我当然做到了,但我建议转而解决为什么您无法从 UI 线程中获得长时间运行的工作
-
这不是一项长时间运行的工作(最多 2 秒),但它正在调用一个不是线程安全的数据库组件,并且重写该组件比简单地强制使用正确的光标要多得多。
标签: wpf multithreading user-interface blocking repaint