C#中Application.DoEvents()的作用

来源:互联网 发布:淘宝模板代码教程 编辑:程序博客网 时间:2024/05/22 00:45

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/

原创粉丝点击