Application.DoEvents()的作用
2015-08-18 13:25
399 查看
Application.DoEvents()的作用:处理当前在消息队列中的所有 Windows 消息。
测试了一下,没有Application.DoEvents()的时候,Label基本处于假死机状态,最后显示一个9999,加上后会数字变换正常显示。
从这个测验后DoEvents的功能,应该DoEvents就好比实现了进程的同步。在不加的时候,因为优先级的问题,程序会执行主进程的代码,再执行别代码,而加了以后就可以同步执行。
交出CPU控制权,让系统可以处理队列中的所有Windows消息,比如在大运算量循环内,加Application.DoEvents可以防止界面停止响应,因为winform的消息循环是通过新创建一个线程来处理的,那么假如你的某个操作比较耗时,那么消息处理得等你这个耗时操作做完了才能继续,而Application.DoEvents方法就是允许你在耗时操作的内部调用它,而去处理消息队列中的消息。像鼠标移动鼠标点击都是windows消息,如果耗时操作一直进行,那么界面就像死锁一样。
引文连接:
http://blogs.msdn.com/b/jfoscoding/archive/2005/08/06/448560.aspx
private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < 10000; i++) { label1.Text = i.ToString(); Application.DoEvents(); } }
测试了一下,没有Application.DoEvents()的时候,Label基本处于假死机状态,最后显示一个9999,加上后会数字变换正常显示。
从这个测验后DoEvents的功能,应该DoEvents就好比实现了进程的同步。在不加的时候,因为优先级的问题,程序会执行主进程的代码,再执行别代码,而加了以后就可以同步执行。
交出CPU控制权,让系统可以处理队列中的所有Windows消息,比如在大运算量循环内,加Application.DoEvents可以防止界面停止响应,因为winform的消息循环是通过新创建一个线程来处理的,那么假如你的某个操作比较耗时,那么消息处理得等你这个耗时操作做完了才能继续,而Application.DoEvents方法就是允许你在耗时操作的内部调用它,而去处理消息队列中的消息。像鼠标移动鼠标点击都是windows消息,如果耗时操作一直进行,那么界面就像死锁一样。
while (true) { Application.DoEvents(); //条件OK,退出循环 }
引文连接:
Application.DoEvents()的作用
C#中Application.DoEvents()的作用
WinForm-Application.DoEvents()
使用Application.DoEvents()的坏处:http://blogs.msdn.com/b/jfoscoding/archive/2005/08/06/448560.aspx
相关文章推荐
- ios开发环境搭建
- Android Edittext 开发常见问题总结(焦点、输入、键盘弹出等)
- IOS竖屏应用单个页面横屏的解决办法
- Websocket Application Messaging Protocol
- ios中position:fixed异常的变通方法
- ios中KeyChain使用
- 苹果开发者的ios distribution证书如何生成
- iOS 手机没有安装支付宝的情况下,不调支付宝网页的解决办法
- 微信开发中查询天气
- 老外被中国app惊呆了
- 开发Android硬件访问服务
- iOS 8 毛玻璃效果(模糊)
- Android源码分析之Handler机制
- Activity 生命周期
- Android对话框的几种形式
- iOS之 Category 属性 的理解
- Fragment+viewpagerIndicator第三方控件实现APP主界面
- iOS应用程序的生命周期
- 关于AndroidStudio导入项目报错的问题
- android Fragment