C#中的延时函数sleep怎么使用
C#延时函数sleep
sleep
using System.Threading; //导入命名空间,类Thread就在此空间中 Thread.Sleep(2000); //延时2s
C#延时函数,不止sleep函数
在C#窗口程序中,如果在主线程里调用Sleep,在Sleep完成之前, 界面呈现出假死状态,不能响应任何操作!
下边实现的是非独占性延时函数,延时过时中界面仍可响应消息:
public static void Delay(int milliSecond) {int start = Environment.TickCount;while (Math.Abs(Environment.TickCount - start) < milliSecond){Application.DoEvents();} }
关于Math.Abs()
Environment.TickCount,内部API是用DWORD GetTickCount()来实现的,该属性的值从系统计时器派生,并以 32 位有符号整数的形式存储。
因此,如果系统连续运行,TickCount 将在约 24.9 天内从零递增至 Int32. MaxValue ,然后跳至 Int32. MinValue (这是一个负数),再在接下来的 24.9 天内递增至零。
DWORD是无符号的,而 Environment.TickCount属性返回的值是有符号的,所以有一半的值用负数表示!
其他
1.用sleep()使线程休眠。
直接在需要延时的地方插入 System.Threading.Thread.Sleep(1000); 即可。
这种方式最方便,但是延时过程中会停止其他响应,如果用在主线程中会造成程序的假死。如果有异步操作的话也会暂停,例如用webBrowser加载网页,本来希望延时一段时间等待网页加载完毕,但用sleep的话同时会暂停网页的加载过程。
用Thread和Timer控件都可以实现,如果用Timer_Tick(…)的话,因为不能在其他函数中调用Timer_Tick(…),所以用起来不方便,其实这两种都是用到了线程,微软推荐的方法是用委托。
用C#中的线程来实现
using System.Threading;//引入命名空间
1.延时10ms代码为:
Thread.Sleep(10);
2.延时1s代码为:
Thread.Sleep(1000);
平时我们在做winform开发的时候,有时候需要让程序休眠几秒钟,但是,如果我们直接使用 thread.sleep()函数,页面ui就会停止响应。
怎么样解决呢,你可以把页面涉及到表现ui的代码放到一个单线程处理,也可以采用我下面的做法,加一个小函数ok了。
/// <summary>/// 延时函数/// </summary>/// <param name="delayTime">需要延时多少秒</param>/// <returns></returns>public static bool Delay(int delayTime){DateTime now = DateTime.Now;int s;do{TimeSpan spand = DateTime.Now - now;s = spand.Seconds;Application.DoEvents();}while (s < delayTime);return true;}
C#中的延时函数sleep怎么使用相关推荐
- Linux Shell中的延时函数
Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下 sleep 和 usleep 的区 ...
- linux内核的延时函数,linux中内核延时函数 (转)
第一类延时函数原型是:(忙等) void ndelay(unsigned long nsecs); void udelay(unsigned long usecs); void mdelay(unsi ...
- c语言延时函数delay_STM32中精确延时函数的实现
在与传感器或者模块的总线进行通信的时候,常常需要使用到精确延时,一般我们会封装几个常用延时函数,下面我们以STM32F103芯片为例,详细介绍一下STM32下一种精确延时函数的实现: 时钟树 下图中紫 ...
- stm32中的延时函数
//粗延时函数,微秒 void delay_nus(u16 time) { u16 i=0; while(time--) { i=10; //自己定义 while(i--) ; } } //毫秒级的 ...
- Linux内核中的延时函数详解
内核中涉及的延时主要有两种实现方式:忙等待或者睡眠等待.前者阻塞程序,在延时时间到达前一直占用CPU,而后者是将进程挂起(置进程于睡眠状态并释放CPU资源).所以,前者一般用在延时时间在毫秒以内的精确 ...
- Linux中的延时函数
来源http://www.linuxidc.com/Linux/2008-06/13407.htm 应用层: #include <unistd.h> 1.unsigned int ...
- matlab中的pause是什么意思,【Matlab学习笔记】【函数学习】一(延时函数pause)...
采用MATLAB中的延时函数pause: Halt execution temporarily 使用方法: pause pause(n) pause on pause off 函数描述: pause, ...
- Linux 延时函数
有一些延时函数写法非常占用CPU,比如while(gettime()>timeSet){},在Linux中应当尽量使用系统调用执行延时,在延时等待期间执行一次进程调度,降低延时函数的CPU占用率 ...
- JavaScript中语句与函数的执行辨析
文章出自个人博客https://knightyun.github.io/2018/05/23/js-anonymous-function,转载请申明. Javascript代码中,语句和函数以及匿名函 ...
最新文章
- Java的新项目学成在线笔记-day12(六)
- saiku、mondrian前奏之——立方体、维度、Schema的基本概念
- 攻击防护手段_如何防护ddos流量攻击?
- C语言文件读写操作之换行符处理
- java中随机数边界问题,java 简单Dice问题(随机数的运用)
- 这个温州人,是中国开店最多的炸鸡王者
- 使用iMazing将PDF文件导入至iOS设备
- SONiC镜像编译指南(转,参考1)
- java读取配置文件_java 读取配置文件
- BeanUtils 用法
- OD教程(汇编基础)
- android gradle 离线安装,Android Studio离线配置gradle(附gradle下载地址)
- 判断一个数是否为素数 java_java中如何判断一个数是否是素数(质数)
- java错误代码1061_求助java大神,看下这是哪里出错了
- java list 冒泡排序_冒泡排序详细分析JAVA
- matlab 矩阵 对称,如何使用Matlab产生对称矩阵
- 配置文件报错 Cannot convert value of type ‘java.lang.String‘ to required type ‘javax.sql.DataSource‘ for p
- JavaScript——与君初相识
- C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归)
- python实现时间序列预处理