该方法可以处理当前队列的消息,比如一个for循环 5000次 向TextBox中追加文本,那肯定会假死一会儿的。

此时便可使用Application.DoEvents()来处理队列的信息。

简单说下使用Application.DoEvents() 和 不使用Application.DoEvents() 的区别:

不使用Application.DoEvents():

循环5000次的话,界面会假死一会儿,然后等待for循环完全结束后然后显示界面。

使用Application.DoEvents():

那么在for循环中加入这句话,界面消息就会及时的得到更新(既不会假死);

------------------

还是用代码来说明比较简单一点,下面是完整代码:

namespace UpdateFor  {  public partial class Form1 : Form      {  public Form1()          {              InitializeComponent();          }  

private void button1_Click(object sender, EventArgs e)          {              WriteText();          }  

/// <summary>  /// 写入数据  /// </summary>        private void WriteText()          {  for (int i = 0; i < 10000; i++)              {                  textBox1.Text += "a";                  Application.DoEvents();              }          }      }  }  

若以上代码编译有疑问或者问题。可下载完整代码例子:

下载后测试 
有Application.DoEvents();和没有的区别即可。

下载地址:

http://files.cnblogs.com/andrew-blog/UpdateFor.rar

参考:http://www.wxzzz.com/?id=36

转载于:https://www.cnblogs.com/andrew-blog/archive/2011/12/03/CSharp_DoEvents.html

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

  1. C# 防止界面假死 多线程进度条的合理使用

    好长时间没发博了 .. 这两天用C#写了一个批量分割图片前景的软件,最初的时候没用多线程,执行批量分割就假死,后来就换成了多线程,结果还是假死.. 网上找了几篇博文看了看,才发现错误的地方. 好了,首 ...

  2. 解决Qt 5程序运行时界面假死的方法

    在Qt 5的GUI程序中,主线程也叫GUI线程,因为它是唯一被允许执行GUI相关操作的线程.对于一些计算量比较大的非常耗时的操作,如果放在主线程中,就是出现界面无法响应的问题.这种问题的解决一种方式是 ...

  3. qt开启线程界面假死问题解决

    一.前言 在 使用qt高速读取传感器数据时,如果想要将数据实时刷新在界面,就需要开启一个线程单独去跑读取数据函数,并反馈给主程序,否则在主程序中读取和刷新界面会很卡很卡,但是在开启多线程,无外接鼠标键 ...

  4. WinForm程序界面假死,寻求完美解决方案

    WinForm程序界面假死,寻求完美解决方案 参考文章: (1)WinForm程序界面假死,寻求完美解决方案 (2)https://www.cnblogs.com/funying/p/3230873. ...

  5. C#多线程与UI响应 防止界面假死不响应(子线程创建的窗体获取消息响应用Application.DoEvent )

    一. 概述 在使用C#进行应用程序设计时,经常会采用多线程的方式进行一些后台任务的工作.对于不同的应用场景,使用的策略也不尽相同. 1. 后台循环任务,少量UI更新:例如批量上传文件,并提供进度.这种 ...

  6. MFC多线程处理界面假死之红外图像数据获取和excel写入

    在MFC主界面某个Button Click事件中起一个线程去做处理一些事情,在起的线程运行完毕后,接着跑Click起线程后的代码,已达到按顺序执行,保证时许正确的目的. 问题 通常处理一个线程等待用 ...

  7. 解决C#界面假死问题

    前几天做ArcEngine二次开发时需要连接ArcSDE数据库,感觉连接ArcSDE的时间有点长,想着在连接ArcSDE之前跳出一个带等待动画的界面等待ArcSDE的链接,于是写了如下代码: priv ...

  8. WinForm多线程+委托防止界面假死

    当有大量数据需要计算.显示在界面或者调用sleep函数时,容易导致界面卡死,可以采用多线程加委托的方法解决 using System; using System.Collections.Generic ...

  9. qt界面崩溃与假死问题

    在开发图表项目时,项目要求如下: 同时打开100多个图表,单个图表的数据5W左右,结果图表出现了崩溃与假死的现象,每天好几次,不是必定出现现象,有的电脑未出现,有的电脑出现频繁 尝试了以下方式去解决问 ...

最新文章

  1. 【斗医】【18】Web应用开发20天
  2. 简单的VC 操作XML 文件的的方法
  3. STM32 电机教程 16 - PMSM电机磁场定向控制原理
  4. Logstash 使用fingerprint filter过滤重复数据
  5. LightOJ 1026 桥 1063 割点
  6. hp服务器raid一直显示同步,HP Netserver NetRAID 一致性检查常见问题解答(FAQ)
  7. 回忆Java基础中Map的遍历方法
  8. rocketmq集成boot
  9. Linux 命令(67)—— time 命令
  10. JAVA_返回一个数值的相反数的几种方式.
  11. *最近培训的一个题目:蚂蚁爬竿
  12. CentOS随笔 - 4.CentOS7安装MySql 5.5.60(下载 tar 方式安装)
  13. 2021-06-29初识JQuery
  14. Chrome常用插件和油猴(Tampermonkey)脚本使用及常用脚本分享(网盘)
  15. 研究validation插件到现在的感受
  16. 全国青少年软件编程等级考试内容,知识点思维导图(Scratch编程三级)
  17. android 修改ip的scope的作用,Android Netd分析
  18. CSS3表单设计–复古
  19. vlan的tagged、untagged
  20. 计算机网络——第四章、网络层

热门文章

  1. POI 2018.10.21
  2. 网络工程:2.1.ARP协议与PC间通信
  3. 每日站立会议12/23
  4. apache环境下配置服务器支持https
  5. 分布式文件系统KFS源码阅读与分析(四):RPC实现机制(KfsClient端)
  6. jQuery:收集一些基于jQuery框架开发的控件/jquery插件2
  7. Java并发编程原理与实战六:主线程等待子线程解决方案
  8. vue-socket.io跨域问题的解决方法
  9. Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程
  10. 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2020-07-22)