c# 高级开发应用:防止界面卡死之Application.DoEvents应用

       Application.DoEvents的功能是处理当前在消息队列中的所有 Windows 消息。

交出CPU控制权,让系统可以处理队列中的所有Windows消息 ,这样在执行耗时的界面操作加上Application.DoEvents可以防止界面停止响应。

      Winform的消息循环是一个线程来处理,那么假如你的某个操作比较耗时,那么消息处理得等你这个耗时操作做完了才能继续,而Application.DoEvents方法就是允许你在耗时操作的内部调用它,而去处理消息队列中的消息。 比如在循环中去更新界面的显示,消耗的时间比较长,那么界面就像死锁一样。

     不过Application.DoEvents()由于其比较消耗系统资源,使用上要慎用。特别是一些后台逻辑尽量通过写服务的方式来进行。也可以通过别的方法来处理的,例如多线程异步调用等

    不过我们在系统登录或者消息提醒 加上Application.DoEvents() 它的作用还是不错的,起到了一个实时响应的效果,例如:
 

for ( int q =  0; q <  10000; q++)
  {

      textBox1.Text = q.ToString();

      //实时响应文本框中的值

       Application.DoEvents(); 

}

你可能感兴趣的:(多线程,C#,界面卡死,c#,linq,开发语言)