我在WPF中创建了一个窗口,以显示当前正在运行的操作的状态。
该窗口在一个单独的线程上运行,该线程源自:Multiple Windows, Multiple Threads example。
我做的第一件事是设置我的状态窗口的所有者,因为我希望它显示在父所有者身上。它应该一起最小化,而不是隐藏在所有者后面。我使用WindowInteropHelper来设置所有者。
这就是问题所在:当主线程忙,并且暂时没有报告任何进度时,状态显示窗口也会停止响应。如何在所有者忙碌时保持子窗口响应?
答案 0 :(得分:0)
这听起来像是你在UI线程上做的繁重工作。您需要将其卸载到新线程,然后使用状态窗口的更新回调到UI线程。这将确保您的状态栏在后台完成工作时保持响应。
在您提供的链接中的Windows示例上方的部分中有一个示例。
请参阅处理阻止操作
如果你想要一个像进度条这样的东西,你需要决定在哪个阶段推进吧,而不是只知道一切都完成。