Application.DoEvents的功能是处理当前在消息队列中的所有 Windows 消息。
交出CPU控制权,让系统可以处理队列中的所有Windows消息 ,这样在执行耗时的界面操作加上Application.DoEvents可以防止界面停止响应。
Winform的消息循环是一个线程来处理,那么假如你的某个操作比较耗时,那么消息处理得等你这个耗时操作做完了才能继续,而Application.DoEvents方法就是允许你在耗时操作的内部调用它,而去处理消息队列中的消息。 比如在循环中去更新界面的显示,消耗的时间比较长,那么界面就像死锁一样。
不过Application.DoEvents()由于其比较消耗系统资源,使用上要慎用。特别是一些后台逻辑尽量通过写服务的方式来进行。也可以通过别的方法来处理的,例如多线程异步调用等
不过我们在系统登录或者消息提醒 加上Application.DoEvents() 它的作用还是不错的,起到了一个实时响应的效果,例如:
for ( int q = 0; q < 10000; q++)
{