多个窗口,多个线程。设置窗口所有者

时间:2014-03-05 14:08:56

标签: c# wpf windows multithreading

我在WPF中创建了一个窗口,以显示当前正在运行的操作的状态。

该窗口在一个单独的线程上运行,该线程源自:Multiple Windows, Multiple Threads example

我做的第一件事是设置我的状态窗口的所有者,因为我希望它显示在父所有者身上。它应该一起最小化,而不是隐藏在所有者后面。我使用WindowInteropHelper来设置所有者。

这就是问题所在:当主线程忙,并且暂时没有报告任何进度时,状态显示窗口也会停止响应。如何在所有者忙碌时保持子窗口响应?

1 个答案:

答案 0 :(得分:0)

这听起来像是你在UI线程上做的繁重工作。您需要将其卸载到新线程,然后使用状态窗口的更新回调到UI线程。这将确保您的状态栏在后台完成工作时保持响应。

在您提供的链接中的Windows示例上方的部分中有一个示例。

请参阅处理阻止操作

如果你想要一个像进度条这样的东西,你需要决定在哪个阶段推进吧,而不是只知道一切都完成。