我写了一个使用for循环2次的简短方法:
progressBar1.Minimum = 1;
progressBar1.Maximum = 1000000;
progressBar1.Step = 1;
for (int idx = 1; idx < 1000000; idx++)
{
progressBar1.PerformStep();
}
Thread.Sleep(2000);
progressBar1.Invalidate();
this.Update();
progressBar1.Value = 1;
for (int idx = 1; idx < 1000000; idx++)
{
progressBar1.PerformStep();
}
我的问题是:在第一遍时,当值达到1000000时,仅实际的彩条
即使值已达到最大值,也会显示50%至75%的像素,但不会显示100%的像素。
这是一种方法中多次使用进度条的独特之处。
我如何才能获得实际的彩色条形图呢?
(显然这是一个缓冲的东西?)
最佳答案
问题在于您正在阻止UI线程。不要那样做在后台线程(例如BackgroundWorker
)中执行所有长时间运行的任务,然后编组回UI线程以更新进度条(BackgroundWorker
使这很简单)...然后一切应该都很好。
关于c# - 如何准确刷新ProgressBar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8761060/