【发布时间】:2013-05-22 12:58:05
【问题描述】:
在表单上,通过单击按钮启动长时间运行的任务。该任务在单独的工作线程上运行,并且在任务运行时我会显示另一个带有进度条的表单。
当任务完成或被取消时,显示进度条的表单将关闭。虚拟代码可能如下所示:
task.DoWorkAsync();
progressBar.Show(parent);
当任务完成时
progressBar.Close();
但有时恰好在显示进度条的窗体关闭的那一刻,主窗体进入后台。更准确地说,我必须做些什么来重现这个问题:
- 启动我的应用程序
- 单击另一个窗口(另一个应用程序的,比如 Excel)将其置于最前面
- 单击我的应用程序窗口(将其置于前面)
- 运行任务
现在进度条关闭后,我的应用程序窗口消失在我之前带到前面的另一个窗口(这里是 Excel)之后。
当然,我上面描述的只是我的应用程序的粗略轮廓。但是我需要找出为什么我的表单在进度条关闭时消失在表单后面。
【问题讨论】:
-
奇怪了,主窗体的线程还能活吗?
-
您正在做某事使主窗口无法访问。您忘记提及了,但这会导致问题。
-
嗨,Hans 和 Fuex,是的,正确的。我忘了提那个。主 UI 线程保持活动状态,并且主窗口被禁用以使其无法访问。我会尽量不禁用它,看看会发生什么。
-
更新:汉斯,非常感谢!这就是解决方案!如果不禁用主窗口,效果就消失了。看起来我们要做很多工作!