好的,所以我已经构建了我的表单应用程序,它有一个循环,使进度条上升,但问题是,当它上升时,窗口不移动或响应,我仍然可以看到进度条改变,我不能关闭它或任何东西,除非它完成。这有点令人讨厌,因为我不希望它在测试时冻结,或者在进度条完成之前有一个不工作的应用程序。这是我的代码:
private void Form1_Load(object sender, EventArgs e)
{
progressBar2.Minimum = 1;
progressBar2.Maximum = nummax;
}
private void timer2_Tick(object sender, EventArgs e)
{
for (int i = 1; i <= nummax; i++)
{
if (i != nummax && !enabled)
{
int percent;
percent = i / nummax;
string ab = percent.ToString();
progress.Text = ab;
Thread.Sleep(50);
progressBar2.Value = i;
}
}
if (progressBar2.Value == nummax || enabled || progressBar2.Value >= nummax - 30)
{
progress.Text = "Completed!";
progressBar2.Minimum = 1;
progressBar2.Maximum = 2;
enabled = true;
}
}
答案 0 :(得分:1)
删除Thread.Sleep(50)
添加progressBar2.Refresh()
或未能使用
progressBar2.PerformStep()
系统正忙于处理,没有时间将Windows消息刷新到控件。