如果在UI的消息处理函数中进行较大量的计算或对界面进行操作,占用较长时间时可以在中间调用Application.DoEvents来响应用户操作,但不建议这样做,替代的方法就是在后台线程中进行这些操作,用线程池是一个不错的方法(例如System.Threading.ThreadPool)。

该函数只能在UI的主线程中调用,不不不要在工作线程中调用该函数,否则Application.DoEvents可能挂死永不退出,使用reflector反编译了一下这个函数,发现里面没有使用lock之类的线程锁,可能不是线程安全的,在MSDN的文档中也没有说明该函数是线程安全的,所以一定不要在多个线程中使用它。

一条绝对安全的方法就是:别用它!

具体什么原因可能导致该函数不退出还没有研究出来,有空重现一下。

慎用Application.DoEvents( )相关推荐

  1. C# Winform中慎用Application.DoEvents

    private void Add(){for (int i = 0; i < 100; i++){Button button = new Button();button.Width = 300; ...

  2. Application.DoEvents()的使用

    最近做了一个个人数字图书馆管理系统,因为牵扯到电脑文件的扫描,想做一个实时显示当前扫面文件的功能,就类似于360文件扫描时的效果,本来打算用多线程来实现,但是方法太多没有实现,后来在程序中进行控制,由 ...

  3. Application.DoEvents

    记得第一次使用Application.DoEvents()是为了在加载大量数据时能够有一个数据加载的提示,不至于系统出现假死的现象,当时也没有深入的去研究他的原理是怎样的,结果在很多地方都用上了App ...

  4. 关于Application.DoEvents()

    记得第一次使用Application.DoEvents()是为了在加载大量数据时能够有一个数据加载的提示,不至于系统出现假死的现象,当时也没有深入的去研究他的原理是怎样的,结果在很多地方都用上了App ...

  5. C# Application.DoEvents() 处理队列消息,防界面假死。

    该方法可以处理当前队列的消息,比如一个for循环 5000次 向TextBox中追加文本,那肯定会假死一会儿的. 此时便可使用Application.DoEvents()来处理队列的信息. 简单说下使 ...

  6. c# Application.DoEvents

    public static void Delay(int ms){int start = System.Environment.TickCount;while (System.Environment. ...

  7. Application.DoEvents可能不是线程安全的

    2019独角兽企业重金招聘Python工程师标准>>> 如果在UI的消息处理函数中进行较大量的计算或对界面进行操作,占用较长时间时可以在中间调用Application.DoEvent ...

  8. C#Application.DoEvents();的作用。

    Visual Studio里的摘要:处理当前在消息队列中的所有 Windows 消息. 交出CPU控制权,让系统可以处理队列中的所有Windows消息 比如在大运算量循环内,加Application. ...

  9. Application.DoEvents();

    一直做的是WEB开发,就没有用到过Application.DoEvents();最近搞手机客户端开发,看到代码里面有这个方法不知道是干什么的.搜了哈.分享分享 Application.DoEvents ...

最新文章

  1. 谈谈图像的style transfer(二)
  2. 盘神 Pandownload 复活
  3. 求二维数组中的最大值和最小值C语言,c语言 写一个子函数要求找出一个二维数组的最大值...
  4. GitHub/Git 使用
  5. 电脑桌面整个都变大了_三招拯救你的电脑桌面,堪比整容!
  6. 保障实时音视频服务体验,华为云原生媒体网络有7大秘籍
  7. 连接Oracle时,navicat可以登录,但是用plsql登录会报 ora-01017:invalid username/password; logon denied
  8. Failed to initialize storage module: user 的解决方式
  9. 抗锯齿_像素画技巧AA手工抗锯齿教程
  10. 灵格斯怎么屏幕取词_完整页灵格斯词霸怎么用,灵格斯词霸使用教程_9号资讯
  11. 【Matlab】符号运算总结
  12. 关于Single Image Super Resolution(单幅影像超分辨率重建任务)Bicubic_LRX4影像生成的‘搬运‘想法
  13. 【php毕业设计】基于php+mysql的社区交流网站设计与实现(毕业论文+程序源码)——社区交流网站
  14. Adjust接入注意事项
  15. mongodb实现一主两从一个仲裁者
  16. vue:高德地图的使用
  17. 原腾讯QQ技术总监、T13专家,黄希彤被裁,原因竟是不愿意被 PUA ?
  18. 计算机毕业设计java_java酒店客房入住管理系统
  19. 【深入浅出IOS开发】设置图片水印
  20. jupyter notebook文件保存路径

热门文章

  1. 2022年百华鞋业祝您新年快乐,虎年大吉
  2. 微趣能Weiqn(微信源码下载)V1.5.0.2beta官方版
  3. A - 卡牌游戏 III
  4. 会员权益HTML,会员权益
  5. Java十年 十大组织 写在2005
  6. 小米android手机怎么刷机,刷机如此简单 小米手机四种刷机方法
  7. 第一章 R语言编程基础(超详细)
  8. 我的世界python写游戏_用python写游戏之 Give it up
  9. java面试题-需要背的内容
  10. 见缝插针小程序php,抖音小程序怎么开通