更新/刷新GUI线程
本文关键字:线程 GUI 刷新 更新 | 更新日期: 2023-09-27 18:16:42
我有一个简单地填充进度条的函数。
private void FillProgressBar(ProgressBar bar, Color c, int percent)
{
int steps = 10;
bar.set_Value(0);
for (int i = 0; i < percent / steps; i++)
{
System.Threading.Thread.Sleep(100);
bar.set_Value((i+1)*10) + bar.get_Value());
this.Refresh();
}
}
我从gui线程(不是多线程)调用它,它的目的是慢慢地填满栏。
但它似乎没有这样做,尽管值确实上升。
关于如何更新特定控件或整个表单有什么建议吗?PS:正如你所看到的,this.Refresh()也不起作用
尝试使用
Application.DoEvents();
更新进度条后。
DoEvents
的更多信息
你当前的代码不让主消息循环执行,所以它会阻塞所有消息,包括WM_PAINT
消息…
你不应该这样做,使用线程,使用计时器:不要阻塞UI。
不要使用Application.DoEvents
,这是糟糕的编程实践,甚至不应该存在。