我有一个程序可以执行一些可以持续几分钟的复制作业(通过File.Copy)。当用户在此时将另一个窗口带到前台时,程序窗口变为空白,因为它不会重绘自己。
现在我想在屏幕中央的额外窗口中显示ProgressBar,但该窗口也是空白。
所以我在另一个没有帮助的线程中启动它。
我很确定之前有人这样做但我找不到一个有效的例子。任何想法?
答案 0 :(得分:4)
BackgroundWorker class上的文档中有很好的例子。
答案 1 :(得分:0)
您可以使用BackgroundWorker类。
请参阅此answer.
答案 2 :(得分:0)
ChrisF是对的。您的长时间操作应该在BackgroundWorker线程中完成。您可以使用BackgroundWorker报告进度,并将其连接到表单上的进度条。
答案 3 :(得分:0)
您需要使用BackgroundWorker
来操作操作。还有其他方法来操作操作,但这个方法可能是最简单的,并且将继续在前台执行消息抽取,因此Windows不认为您的应用程序已停止响应。
另一种选择是使用Thread
,并使用Thread.Join
等待后台任务完成,因为Thread.Join
在等待时也会向Windows发送标准消息泵信息。