求助关于ProgressBar显示的问题
大家好,请教一个ProgressBar显示的问题,我在同一个Form里添加了两个控件:一个button,一个ProgressBar,简化代码如下:
// button的Click函数
private void btnRun_Click(object sender, EventArgs e)
{
StartAnalysis();
}
private void SartAnalysis()
{
progressBar1.Visible = true;
progressBar1.Maximum = 100;
// 循环计算
for (int i = 0; i < 100; ++i)
{
// 以下是计算:每次循环计算都比较耗时
.........
// 刷新进度条当前值
progressBar1.Value = i;
}
MessageBox.Show("计算结束!");
progressBar1.Visible = false;
}
问题是:当点击button按钮开始计算时,过了好一阵才看到进度条有进度,而当计算已经结束时(此时弹出“计算结束!”提示),进度条还在走,简而言之就是进度条显示明显滞后于计算。单步调试时,progressBar1.Value明明已经更新了的。
看到很多人用多线程的方式更新进度条,是不是因为我这只是一个线程,所以UI显示和计算两块太拥挤了呢?C#学习尚浅,求高手指点,谢谢了!