我有一个在Windows 7和Windows 10计算机下运行的应用程序。
一种非常简单的方法"在启动期间传输一些文件,因此进度条显示进度(0-100%),同时检查有问题的文件(更改日期)是否需要再次复制。
使用Windows 7,一切都按预期工作。基本上它只是一个foreach,比较日期,然后复制或不复制。
for (i = 0; i < fileCount; i++)
{
copyOrNot(files[i]);
progress = ((Double)i + 1) / (Double)fileCount;
this.progressBar_Loading.Value = Convert.ToInt16(progress);
Application.DoEvents();
}
使用Windows 7的应用程序,无论是否复制文件,进度条都可以完美地运行到100%。
对于Windows 10,我注意到,进度条的UI更新是&#34;该死的很慢&#34; - 如果20个文件中没有需要复制,则进度条最多显示50%,然后整个过程结束并且应用程序启动。
虽然(技术上)没有区别,但如果Windows 10能够显示正确的进度,即使不需要(耗时的)副本,它也会很好。&#34;很好。
添加&#34; Thread.Sleeps&#34;每个文件修复Windows 10的问题后 - 但我不想人为地减慢这个过程只是为了在Windows 10上有一个正确的UI输出。
有什么建议吗?
ps。在&#34; Splash-Screen&#34;期间,所有内容都发生在UI-Thread上,因此Application.DoEvents()
。
pps。:即使&#34;状态标签&#34;报告状态说&#34; 100%&#34; - Windows 10下的进度条刚刚进入约50%)
编辑:
示例,Windows 10(使用Windows 7,进度条已经达到&#34;结束&#34;栏 - 计算报告100%,用户界面没有。)
Windows 7:
编辑:我现在把所有的时间都花在了自己的线程上,使用代理来更新ui - 仍然是同样的问题。
只添加&#34; Thread.sleep&#34;在线程结束时大约250毫秒允许UI在Windows 10下的进度条上正确显示100%...