C#中的延时函数sleep

 更新时间:2022年06月09日 14:30:11   作者:SSS_369  
这篇文章主要介绍了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#实现将选中复选框的信息返回给用户的方法

    C#实现将选中复选框的信息返回给用户的方法

    这篇文章主要介绍了C#实现将选中复选框的信息返回给用户的方法,涉及C#针对复选框操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C#实现日期时间的格式化输出的示例详解

    C#实现日期时间的格式化输出的示例详解

    这篇文章主要为大家详细介绍了C#实现日期时间的格式化输出的相关资料,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-03-03
  • c#中实现图片灰度化技术详解

    c#中实现图片灰度化技术详解

    这篇文章主要介绍了c#中实现图片灰度化技术详解,本文给出计算公式和实现代码以及图片例子,需要的朋友可以参考下
    2014-08-08
  • C#如何对Dictionary遍历赋值

    C#如何对Dictionary遍历赋值

    这篇文章主要介绍了C#如何对Dictionary遍历赋值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • C# Any()和AII()方法的区别

    C# Any()和AII()方法的区别

    本文主要介绍了C# Any()和AII()方法的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C#中Equality和Identity浅析

    C#中Equality和Identity浅析

    这篇文章主要介绍了C#中Equality和Identity浅析,本文先是讲解了Equality和Identity的定义,同时讲解了判断两个对象等价性的4种方法,需要的朋友可以参考下
    2014-12-12
  • Winform实现抓取web页面内容的方法

    Winform实现抓取web页面内容的方法

    这篇文章主要介绍了Winform实现抓取web页面内容的方法,代码只有短短几行,但是功能很实用,需要的朋友可以参考下
    2014-09-09
  • c#数据库与TXT导入导出的实例

    c#数据库与TXT导入导出的实例

    最近刚学完ADO.NET,做了个数据导入导出的题目,是将txt中的数据导入数据库,然后将数据库中的数据导出到txt中,这里说的数据的格式是“tom|23”,tom指名字,23指年龄。废话也不多说了,大家直接看代码。
    2013-04-04
  • C#导入和导出CSV文件

    C#导入和导出CSV文件

    这篇文章介绍了C#导入和导出CSV文件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • unity实现简单计算器

    unity实现简单计算器

    这篇文章主要为大家详细介绍了unity实现简单计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论