线程不起作用
本文关键字:不起作用 线程 | 更新日期: 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();
}
编辑:要工作,您必须放入某些事件,例如单击按钮,切勿在表单加载中