我正在使用C#和WPF,两者都很新颖。如何在繁忙循环中显示进度?
我有一个循环,从外部来源读取大量的数据。该过程大约需要20秒,我想向用户显示进度。我不需要任何花哨的进度条,所以我选择在标签中绘制我的进度,标签上会显示“Step 1/1000”,然后更改为“Step 2/1000”等。
我的代码看起来像这个:
// "count" is the number of steps in the loop,
// I receive it in previous code
String countLabel = "/"+count.ToString();
for (i = 0; i < count; i++)
{
... do analysis ...
labelProgress.Content = "Step "+i.ToString()+countLabel
}
但是,在分析过程中,屏幕“卡住”,进度不显示为前进。我理解我在C++中的这种行为,我可能会有一个单独的线程显示进度条从循环接收通知,或某种形式的重绘/刷新,或强制窗口/应用程序处理其消息队列。
什么是在C#中做到这一点的正确方法?我不依赖于标签,因此,如果有一个简单的进度条弹出画面,我可以代替使用这个标签也将是巨大的......
感谢
这可能是帮助你,** 100%测试** http://stackoverflow.com/a/42995210/6863414 – 2017-04-06 03:53:08