C# Application.DoEvents() 处理队列消息,防界面假死。
该方法可以处理当前队列的消息,比如一个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() 处理队列消息,防界面假死。相关推荐
- C# 防止界面假死 多线程进度条的合理使用
好长时间没发博了 .. 这两天用C#写了一个批量分割图片前景的软件,最初的时候没用多线程,执行批量分割就假死,后来就换成了多线程,结果还是假死.. 网上找了几篇博文看了看,才发现错误的地方. 好了,首 ...
- 解决Qt 5程序运行时界面假死的方法
在Qt 5的GUI程序中,主线程也叫GUI线程,因为它是唯一被允许执行GUI相关操作的线程.对于一些计算量比较大的非常耗时的操作,如果放在主线程中,就是出现界面无法响应的问题.这种问题的解决一种方式是 ...
- qt开启线程界面假死问题解决
一.前言 在 使用qt高速读取传感器数据时,如果想要将数据实时刷新在界面,就需要开启一个线程单独去跑读取数据函数,并反馈给主程序,否则在主程序中读取和刷新界面会很卡很卡,但是在开启多线程,无外接鼠标键 ...
- WinForm程序界面假死,寻求完美解决方案
WinForm程序界面假死,寻求完美解决方案 参考文章: (1)WinForm程序界面假死,寻求完美解决方案 (2)https://www.cnblogs.com/funying/p/3230873. ...
- C#多线程与UI响应 防止界面假死不响应(子线程创建的窗体获取消息响应用Application.DoEvent )
一. 概述 在使用C#进行应用程序设计时,经常会采用多线程的方式进行一些后台任务的工作.对于不同的应用场景,使用的策略也不尽相同. 1. 后台循环任务,少量UI更新:例如批量上传文件,并提供进度.这种 ...
- MFC多线程处理界面假死之红外图像数据获取和excel写入
在MFC主界面某个Button Click事件中起一个线程去做处理一些事情,在起的线程运行完毕后,接着跑Click起线程后的代码,已达到按顺序执行,保证时许正确的目的. 问题 通常处理一个线程等待用 ...
- 解决C#界面假死问题
前几天做ArcEngine二次开发时需要连接ArcSDE数据库,感觉连接ArcSDE的时间有点长,想着在连接ArcSDE之前跳出一个带等待动画的界面等待ArcSDE的链接,于是写了如下代码: priv ...
- WinForm多线程+委托防止界面假死
当有大量数据需要计算.显示在界面或者调用sleep函数时,容易导致界面卡死,可以采用多线程加委托的方法解决 using System; using System.Collections.Generic ...
- qt界面崩溃与假死问题
在开发图表项目时,项目要求如下: 同时打开100多个图表,单个图表的数据5W左右,结果图表出现了崩溃与假死的现象,每天好几次,不是必定出现现象,有的电脑未出现,有的电脑出现频繁 尝试了以下方式去解决问 ...
最新文章
- 【斗医】【18】Web应用开发20天
- 简单的VC 操作XML 文件的的方法
- STM32 电机教程 16 - PMSM电机磁场定向控制原理
- Logstash 使用fingerprint filter过滤重复数据
- LightOJ 1026 桥 1063 割点
- hp服务器raid一直显示同步,HP Netserver NetRAID 一致性检查常见问题解答(FAQ)
- 回忆Java基础中Map的遍历方法
- rocketmq集成boot
- Linux 命令(67)—— time 命令
- JAVA_返回一个数值的相反数的几种方式.
- *最近培训的一个题目:蚂蚁爬竿
- CentOS随笔 - 4.CentOS7安装MySql 5.5.60(下载 tar 方式安装)
- 2021-06-29初识JQuery
- Chrome常用插件和油猴(Tampermonkey)脚本使用及常用脚本分享(网盘)
- 研究validation插件到现在的感受
- 全国青少年软件编程等级考试内容,知识点思维导图(Scratch编程三级)
- android 修改ip的scope的作用,Android Netd分析
- CSS3表单设计–复古
- vlan的tagged、untagged
- 计算机网络——第四章、网络层
热门文章
- POI 2018.10.21
- 网络工程:2.1.ARP协议与PC间通信
- 每日站立会议12/23
- apache环境下配置服务器支持https
- 分布式文件系统KFS源码阅读与分析(四):RPC实现机制(KfsClient端)
- jQuery:收集一些基于jQuery框架开发的控件/jquery插件2
- Java并发编程原理与实战六:主线程等待子线程解决方案
- vue-socket.io跨域问题的解决方法
- Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程
- 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2020-07-22)