繁体   English   中英

C#窗口在繁忙时变为空白->进度栏? 但是如何?

[英]C# Window gets blank when busy -> Progressbar? But how?

我有一个程序执行一些复制作业(通过File.Copy),该作业可能持续几分钟。 当用户此时将另一个窗口置于前景时,程序窗口将变为空白,因为它不会重新绘制自身。

现在,我想在屏幕中心的另一个窗口中显示一个ProgressBar,但是该窗口也为空白。

因此,我在另一个没有帮助的线程中启动了它。

我很确定有人以前这样做过,但是我找不到有效的例子。 有任何想法吗?

BackgroundWorker类的文档中有一个很好的示例。

您可以使用BackgroundWorker类。

看到这个答案。

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

您需要使用BackgroundWorker对操作进行线程化。 还有其他方法可以对该操作进行线程化,但是这种方法可能是最简单的,并且将继续在前台执行消息泵送,因此Windows不会认为您的应用程序已停止响应。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM