标题听起来像是一个众所周知的问题,但请查看:
我有一些WPF窗口处理Threads
列表,并为每个ProgressBar
显示Thread
。调用的GUI刷新适用于显示正确百分比数的大多数线程,并且对于未知进度,IsIndeterminate
状态也是动画的。线程完成后,一些动画淡出ProgressBar
。
但是,对于我的一些繁重任务,ProgressBar
无法直观更新。例如,仅当我强制GUI通过某些鼠标悬停事件或移动表单重绘时,IsIndeterminate
状态才会刷新。淡出动画显示同样的问题。
我认为这并不常见,因为UI线程没有被进一步的操作阻止(只有一个调用设置IsIndeterminate = true
)。到目前为止,我还无法找出导致此行为的繁重任务与不执行此任务的繁重任务之间的差异。
请注意,用Thread
替换BackgroundWorker
会显示完全相同的问题(我也不确定为什么人们说BackgroundWorker
不会冻结GUI但是据说是Threads
- 这似乎并不完全正确。另请注意,虽然线程暂停Thread.Suspend()
(是的,我知道它已经过时但这是我需要的基本功能,因为任务内容未知),GUI将不会显示{ {1}}动画,如果没有其他GUI元素强制刷新窗口。
任何想法可能是什么问题以及如何解决它?我只需要通常的刷新率来绘制动画控件...