在Winform程序的UI界面使用Thread.Sleep,窗体界面会被卡死,如图1所示,程序sleep 5000毫秒,时间到了之后,按钮的名称才更改过来,窗体也能被鼠标拖动。而用Delay方法,就能让窗体在sleep中,也能活动起来,如图2所示。

图一

图二

private void button1_Click(object sender, EventArgs e){//button1.Text = "用Thread...";//System.Threading.Thread.Sleep(5000);button1.Text = "用Delay...";Delay(5000);}public void Delay(int millSeconds){Stopwatch watch = new Stopwatch();while (watch.ElapsedMilliseconds < millSeconds){System.Threading.Thread.Sleep(50);Application.DoEvents();}watch.Stop();}

最主要的就是这个Delay方法,用到一个秒表,之后是一个循环,循环里面的条件是当秒表计时器时间<Delay时间时,用50毫秒作为单位延迟时间,Application.DoEvents()的作用就是:处理所有的当前在消息队列中的Windows消息.这个消息队列大概是你对windows窗体进行的操作按先后顺序的入队.windows窗体维持着一个消息泵,会阻塞式的循环这个队列.参考:http://www.cnblogs.com/blosaa/archive/2013/05/31/3109586.html这篇文章就会明白的.所以当延迟时间很小的时候,这个消息泵不会被阻塞太久,就能及时地响应用户的操作.

转载于:https://www.cnblogs.com/HelloQLQ/p/10255718.html

Thread.Sleep太久,界面卡死相关推荐

  1. c# 多线程界面卡顿_C#多线程解决界面卡死问题的完美解决方案

    文章下最方有源码下载 问题描述: 当我们的界面需要在程序运行中不断更新数据时,当一个textbox的数据需要变化时. 为了让程序执行中不出现界面卡死的现像,最好的方法就是更新主界面,这样就不会出现卡死 ...

  2. c#多线程防止界面卡死

    当我们的界面需要在程序运行中不断更新数据时,当一个textbox的数据需要变化时,为了让程序执行中不出现界面 卡死 的现像,最好的方法就是 多线程 来解决 一个主线程来 创建 界面,使用一个子线程来执 ...

  3. wxPython多线程界面卡死或在不同平台崩溃问题

    一.测试程序界面 二.不使用多线程代码如下(当点击开启日志的时候,直接导致界面卡死) #coding:utf-8 import sys import threading import time imp ...

  4. 微信团队披露:微信界面卡死超级bug“15。。。。”的来龙去脉

    1.微信超级Bug 大家好,给大家介绍一下,这是Bug: 应该有很多Android的用户熟悉上面这图. (本文同步发布于:http://www.52im.net/thread-1099-1-1.htm ...

  5. WPF--Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析

    原文地址: http://www.tuicool.com/articles/F7reem http://blog.csdn.net/yl2isoft/article/details/11711833 ...

  6. VB.Net 解决winForm界面卡死

    问题,利用多线程解决界面卡死时,控件不能在新建的线程中访问. 解决方法, 可使用Invoke或BeginInvoke,在拥有此控件的基础窗口句柄的线程上执行指定的委托. Invoke 方法 (Dele ...

  7. ubuntu系统界面卡死解决方案记录

    使用Ubuntu20.04版本,因为Ubuntu系统内有很多内容,系统界面卡死时,若强制关机,损伤太大,还有可能进不了系统,直接坏掉.所以搜集了网上大佬们解决方案,现把解决我问题的两种方法放在这里. ...

  8. 【Unity项目优化宝典】Unity3d打包后移动端启动黑屏时间太久

    欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群,行业纵横颇多,每个人精通领域各异,旨在交流, .公司性质使然,经手很多小项目.在美术资源少,代码框架简单的情况下一般不会考虑到 ...

  9. C# 串口关闭时主界面卡死原因分析

    问题描述# 前几天用SerialPort类写一个串口的测试程序,关闭串口的时候会让界面卡死. 参考博客windows程序界面卡死的原因,得出界面卡死原因:主线程和其他的线程由于资源或者锁争夺,出现了死 ...

  10. 前百度员工失业太久求鼓励!网友:我也曾失业多时!坚持就是胜利!

    失业永远是社畜们最怕的话题之一,有工作时发愁,没工作时也发愁.在疫情的阴影下,许多人失去了工作,与感染新冠病毒相比,大家更担心没有收入,毕竟生活压力就像悬在头顶的达摩克利斯之剑.一个前百度员工就因为失 ...

最新文章

  1. 适合win7的python版本_windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2...
  2. 生信人写程序2. Editplus添加Perl, Shell, R模板和语法高亮
  3. 2021年春季学期-信号与系统-第四次作业参考答案-第三小题
  4. python3 日志模块
  5. setlocal启动批处理文件中环境变量的本地化
  6. Cortex-M3-MPU(存储器保护单元)
  7. Spark内存管理(1)—— 静态内存管理
  8. 用 Python 编写一个天气查询应用 pyqt5
  9. sql分区表上创建索引_SQL Server中分区表和索引的选项
  10. 记一次mysql故障恢复
  11. RSA 数字签名 免密码登录
  12. 外卖点餐列表滑动 微信小程序_点餐小程序购物车效果实现,点餐小程序购物车列表的实现...
  13. 学习编程从哪里开始比较好呢?有什么推荐?
  14. 网络七层协议:OSI七层协议大白话解读
  15. 如何学习编程语言_如何学习编程
  16. selenium常用的浏览器窗口操作
  17. csdn上传图片无水印
  18. 基于Android宠物领养救助系统app
  19. 首攻RSA,天空卫士“秀肌肉”怎么样了?
  20. 最大访客数(c/python)

热门文章

  1. 最小化JavaScript代码
  2. python threading编程中的LOCK和RLOCK(可重入锁)
  3. PCoIP卡由火炮升级为喀秋莎
  4. 在 for 循环里写加号拼接字符串的那个同事,不见了~
  5. 你们要得SpringBoot版的停车管理系统(含小程序)已经找到了,改改就能卖钱(附源码)...
  6. LinkedList 真的是查找慢增删快?刷新你的认知!
  7. 5 年 Java 面试大厂遭淘汰,面试官:连这个源码都不懂
  8. REST和微服务——用异步交互分解单体系统
  9. 淘宝现重大BUG,是程序员报复?官方回应
  10. Docker 指定数据储存目录