日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C#中的一些延時函數_C#教程

作者:未風 ? 更新時間: 2022-08-02 編程語言

C#一些延時函數

sleep延時方法

System.Threading.Thread.Sleep(1000); //毫秒

實現的是非獨占性延時函數,延時過時中界面仍可響應消息:

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屬性返回的值是有符號的,所以有一半的值用負數表示!

C#準確延時函數

最近一段時間用C#寫了一個上位機,由于需要用到延時函數,所以給大家分享一個準確延時函數

大家在網上一定找到過這個延時函數

用是能用,但是有一個致命問題,就是大于一分鐘的延時會陷入無限死循環,于是修改了博主師傅修改了一下,修改的原理也很簡單,大家可以自己理解領會,以下是修改的源碼:

public bool Dalay(int ms)
{
    DateTime now = DateTime.Now;
    int s;
    do
    {
        TimeSpan spand = DateTime.Now - now;
        s = spand.Minutes * 60 * 1000 + spand.Seconds * 1000 + spand.Milliseconds;
        Application.DoEvents();
    }
    while (s < ms);
    return true;
}

原文鏈接:https://www.cnblogs.com/weifeng123/p/10038443.html

欄目分類
最近更新