作者: littleboy 2022-09-12 11:53:21

窗口的刷新方法

Application.DoEvents()方法

因为winform的消息循环是一个线程来处理,那么假如你的某个操作比较耗时,那么消息处理得等你这个耗时操作做完了才能继续,而Application.DoEvents方法就是允许你在耗时操作的内部调用它,而去处理消息队列中的消息。

作用

首先我们先看看在循环比较大的程序中,它的作用还是不错的,起到了一个实时响应的效果

用 Application.DoEvents()方法来更新窗口的刷新,显示数字进度条。让For循环里的文本进行更新【1】

1
2
3
4
5
private void ProgressBar_Number(int i, int length)//数字进度条
{
label1.Text=(i + 1) + "/" + length; ;
Application.DoEvents();
}

存在问题

可是DoEvents也带来了效率上的问题,处理同样的一个事件调用了DoEvents后效率降低了好几倍,这也是为什么要慎用的原因了【2】。

参考

【1】C# 循环体中如何 更新窗体 (text)控件显示 - 知乎

【2】c#学习笔记之Application.DoEvents应用_c# application.doevents-CSDN博客