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(&hellip;)的话,因为不能在其他函数中调用Timer_Tick(&hellip;),所以用起来不方便,其实这两种都是用到了线程,微软推荐的方法是用委托。

用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怎么使用相关推荐

  1. Linux Shell中的延时函数

    Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下  sleep 和 usleep 的区 ...

  2. linux内核的延时函数,linux中内核延时函数 (转)

    第一类延时函数原型是:(忙等) void ndelay(unsigned long nsecs); void udelay(unsigned long usecs); void mdelay(unsi ...

  3. c语言延时函数delay_STM32中精确延时函数的实现

    在与传感器或者模块的总线进行通信的时候,常常需要使用到精确延时,一般我们会封装几个常用延时函数,下面我们以STM32F103芯片为例,详细介绍一下STM32下一种精确延时函数的实现: 时钟树 下图中紫 ...

  4. stm32中的延时函数

    //粗延时函数,微秒 void delay_nus(u16 time) { u16 i=0; while(time--) { i=10;  //自己定义 while(i--) ; } } //毫秒级的 ...

  5. Linux内核中的延时函数详解

    内核中涉及的延时主要有两种实现方式:忙等待或者睡眠等待.前者阻塞程序,在延时时间到达前一直占用CPU,而后者是将进程挂起(置进程于睡眠状态并释放CPU资源).所以,前者一般用在延时时间在毫秒以内的精确 ...

  6. Linux中的延时函数

    来源http://www.linuxidc.com/Linux/2008-06/13407.htm 应用层: #include <unistd.h>      1.unsigned int ...

  7. matlab中的pause是什么意思,【Matlab学习笔记】【函数学习】一(延时函数pause)...

    采用MATLAB中的延时函数pause: Halt execution temporarily 使用方法: pause pause(n) pause on pause off 函数描述: pause, ...

  8. Linux 延时函数

    有一些延时函数写法非常占用CPU,比如while(gettime()>timeSet){},在Linux中应当尽量使用系统调用执行延时,在延时等待期间执行一次进程调度,降低延时函数的CPU占用率 ...

  9. JavaScript中语句与函数的执行辨析

    文章出自个人博客https://knightyun.github.io/2018/05/23/js-anonymous-function,转载请申明. Javascript代码中,语句和函数以及匿名函 ...

最新文章

  1. Java的新项目学成在线笔记-day12(六)
  2. saiku、mondrian前奏之——立方体、维度、Schema的基本概念
  3. 攻击防护手段_如何防护ddos流量攻击?
  4. C语言文件读写操作之换行符处理
  5. java中随机数边界问题,java 简单Dice问题(随机数的运用)
  6. 这个温州人,是中国开店最多的炸鸡王者
  7. 使用iMazing将PDF文件导入至iOS设备
  8. SONiC镜像编译指南(转,参考1)
  9. java读取配置文件_java 读取配置文件
  10. BeanUtils 用法
  11. OD教程(汇编基础)
  12. android gradle 离线安装,Android Studio离线配置gradle(附gradle下载地址)
  13. 判断一个数是否为素数 java_java中如何判断一个数是否是素数(质数)
  14. java错误代码1061_求助java大神,看下这是哪里出错了
  15. java list 冒泡排序_冒泡排序详细分析JAVA
  16. matlab 矩阵 对称,如何使用Matlab产生对称矩阵
  17. 配置文件报错 Cannot convert value of type ‘java.lang.String‘ to required type ‘javax.sql.DataSource‘ for p
  18. JavaScript——与君初相识
  19. C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归)
  20. python实现时间序列预处理

热门文章

  1. 美国项目管理协会宣布从Net Objectives手中收购FLEX
  2. 做一个合格的技术总监
  3. Simulink Desktop Real-Time
  4. 瞬间击退眼睛疲劳的五大运动
  5. 《C陷阱与缺陷》学习笔记(2):作者有话说
  6. 2022-2028年中国锂电池铝塑膜行业市场专项调研及发展策略分析报告
  7. Python 数据分析 数据挖掘 学习路径图
  8. Android 自定义圆盘,方向盘
  9. BUUCTF:[BJDCTF2020]signin
  10. 再严重的感冒,马上就好【转】