线程不起作用

本文关键字:不起作用 线程 | 更新日期: 2023-09-27 18:34:44

所以!我只是在 winForm 中玩进度条,但我注意到了一些东西。如果我使用 For 语句,即使我输入 EX:Thread.Sleep(10000(,进度条也会立即从 0 到 100;它等待时间,然后 100%。

我做错了什么?

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

线程不起作用

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

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

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

编辑:要工作,您必须放入某些事件,例如单击按钮,切勿在表单加载中