Visual Studio里的摘要:处理当前在消息队列中的所有 Windows 消息。
交出CPU控制权,让系统可以处理队列中的所有Windows消息,比如在大运算量循环内,加Application.DoEvents可以防止界面停止响应,因为winform的消息循环是一个线程来处理,那么假如你的某个操作比较耗时,那么消息处理得等你这个耗时操作做完了才能继续,而Application.DoEvents方法就是允许你在耗时操作的内部调用它,而去处理消息队列中的消息。像鼠标移动鼠标点击都是windows消息,如果耗时操作一直进行,那么界面就像死锁一样。
(耗时操作用的比较多)
例:可用在避免用户重复点击按钮
// 现象描述:
// 用户点击按钮后程序开始繁忙工作,这时候用户不知道是否成功,就继续点几次
// 采用Enalbe = false ... = true的方式发现还会触发点击,分析原因如下
// 当程序繁忙的时候消息被堵住了
// 所以点击消息还会被处理
// 将队列里的消息处理掉后才打开按钮的Enabled
privatevoid button1_Click(object sender, EventArgs e)
{
button1.Enabled =false;
Thread.Sleep(2000);
richTextBox1.AppendText(Environment.TickCount.ToString() +"\r\n");
Application.DoEvents(); // 关键语句
button1.Enabled= true;
}
相关内容:http://xiexing20.blog.163.com/blog/static/5738501820137299433664/