2019独角兽企业重金招聘Python工程师标准>>>

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

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

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

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

转载于:https://my.oschina.net/zhuzhufanli/blog/2222167

Application.DoEvents可能不是线程安全的相关推荐

  1. c# Application.DoEvents

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

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

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

  3. 慎用Application.DoEvents( )

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

  4. C# System.Windows.Forms.Application.DoEvents()

    cs开发中,有时候界面用线程还是会卡,因为要invoke实时更新窗口,从db读取数据. 用backgroundworker效果不理想,用线程也不理想. 加上这个效果好好多 System.Windows ...

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

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

  6. Application.DoEvents()的使用

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

  7. C# Winform中慎用Application.DoEvents

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

  8. Application.DoEvents

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

  9. Application.DoEvents();

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

最新文章

  1. opengl版本发展史及各种概念的厘清
  2. 内地计算机学校,全球大学计算机实力排名:清北人工智能内地前2
  3. Android Sdcard 可用空间大小
  4. Chrome 技术篇-常用web调试技巧清除缓存并硬性重新加载
  5. JS 清空table
  6. MySQL数据库(六) 一一 基本操作之事物和索引
  7. appium python unittest_appium+python+unittest自动化测试
  8. devops实践指南_开发DevOps的实用指南:减少八卦的步骤
  9. 贪心算法——洛谷(P1090)[NOIP2004]合并果子
  10. Windows XP系统文件一一诠释(1)[最新整理](转BY wang6610----BBS.WUYOU.COM)
  11. [转]语言模型训练工具SRILM
  12. 移动硬盘中安装ubuntu系统——Vmware Workstation安装
  13. 银行数据仓库体系实践(8)--主数据模型设计
  14. VISTA系统常识技巧集锦
  15. 【计算机组成原理】真值与机器值小数原码与整数原码定义及举例
  16. 什么是对冲?对冲的作用
  17. 智慧园区背景 智慧园区如何建设 智慧园区落地实例
  18. Pikachu靶场通过记录
  19. AutoCAD ObjectArx 2013 Wizard 安装
  20. ETH节点调用出现 tx fee (1.30 ether) exceeds the configured cap (1.00 ether)

热门文章

  1. Python 函数的参数形式
  2. 杭电OJ(HDU)-ACMSteps-Chapter Three-《FatMouse#39; Trade》《今年暑假不AC》《排名》《开门人和关门人》...
  3. javascript里的几种常见的数组方法
  4. 手把手教你crontab排障
  5. ASP.NET MVC源码分析系列
  6. 数据库是.frm,.myd,myi备份如何导入mysql (转)
  7. 运算符重载 - C++快速入门25
  8. 在线文本并集计算工具
  9. JavaScript HTML DOM 1
  10. Android的DatePicker和TimePicker-android学习之旅(三十八)