繁忙时C#窗口变空白 - >进度条?但是怎么样?

时间:2011-08-19 13:34:53

标签: c# multithreading winforms progress-bar

我有一个程序可以执行一些可以持续几分钟的复制作业(通过File.Copy)。当用户在此时将另一个窗口带到前台时,程序窗口变为空白,因为它不会重绘自己。

现在我想在屏幕中央的额外窗口中显示ProgressBar,但该窗口也是空白。

所以我在另一个没有帮助的线程中启动它。

我很确定之前有人这样做但我找不到一个有效的例子。任何想法?

4 个答案:

答案 0 :(得分:4)

BackgroundWorker class上的文档中有很好的例子。

答案 1 :(得分:0)

您可以使用BackgroundWorker类。

请参阅此answer.

答案 2 :(得分:0)

ChrisF是对的。您的长时间操作应该在BackgroundWorker线程中完成。您可以使用BackgroundWorker报告进度,并将其连接到表单上的进度条。

答案 3 :(得分:0)

您需要使用BackgroundWorker来操作操作。还有其他方法来操作操作,但这个方法可能是最简单的,并且将继续在前台执行消息抽取,因此Windows不认为您的应用程序已停止响应。

另一种选择是使用Thread,并使用Thread.Join等待后台任务完成,因为Thread.Join在等待时也会向Windows发送标准消息泵信息。