你把数字调大点
for (int i = 0; i < 10000; i++)
{
progressBar1.Value = i;
label1.Text = i.ToString();
}
可以观察到progressBar1的增长并不是匀速的,如果要实现匀速,可以简单的这样写
for (int i = 0; i < 10000; i++)
{
progressBar1.Value = i;
label1.Text = i.ToString();
Application.DoEvents();
}
其实也就是说你被ProgressBar忽悠了,直接用并不是异步的,不是匀速也说明你看到的ProgressBar进度不是很准的执行进度,你可以理解为它的“刷新频率比label高了”
事实上如果你要准确的使用ProgressBar,还需要异步调用http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433205.html
应该是 ProgressBar 是异步的, 你给他的value 付了值 就会引起 valuechanged 事件 , 再加上他是子线程异步 就是实时更新 UI。 而label 是同步的,当前线程正在执行耗时操作, 他会等