Windows窗体在进度条冻结?

时间:2018-05-21 14:40:09

标签: c# winforms

好的,所以我已经构建了我的表单应用程序,它有一个循环,使进度条上升,但问题是,当它上升时,窗口不移动或响应,我仍然可以看到进度条改变,我不能关闭它或任何东西,除非它完成。这有点令人讨厌,因为我不希望它在测试时冻结,或者在进度条完成之前有一个不工作的应用程序。这是我的代码:

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;
    }
}

1 个答案:

答案 0 :(得分:1)

删除Thread.Sleep(50)

添加progressBar2.Refresh()

或未能使用

progressBar2.PerformStep()

系统正忙于处理,没有时间将Windows消息刷新到控件。