线程不工作?

时间:2016-02-15 18:26:21

标签: c# winforms visual-studio

原来如此!我正在玩winForm中的进度条,但我发现了一些东西。如果我使用For语句,进度条会从0到100瞬间,即使我输入EX:Thread.Sleep(10000);等待时间再过100%。

我做错了什么?

    public void progressbar(object sender, EventArgs e)
    {
        for (int i = 0 ; i < 100; i++)
        {
            Thread.Sleep(10);
            progressBar1.Value = i;

        }

    }

2 个答案:

答案 0 :(得分:3)

您正在阻止UI线程。当您的事件处理程序正在运行时,您的窗口无法处理任何传入的窗口消息,因此它不会更新,也不会重新绘制。不要阻止UI线程。

答案 1 :(得分:0)

您需要更新进度条的每个互动。另请注意,在您的for中,将仅转到90而不是100.请尝试此代码:

for (int i = 0; i <= 100; i++)
{
    Thread.Sleep(10);
    progressBar1.Value = i;
    progressBar1.Refresh();
}

编辑: 要工作,你必须放入一些事件,如单击按钮,从不在表单加载