【问题标题】:WPF: Update mousepointer when UI thread is blockedWPF:当 UI 线程被阻塞时更新鼠标指针
【发布时间】: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


【解决方案1】:

看来我已经找到了解决办法。不要更改窗口的光标,而是全局覆盖它:

Mouse.OverrideCursor = Cursors.Wait;
[Heavy Task]
Mouse.OverrideCursor = Cursors.Default;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多