C#中的一些延時函數(shù)
C#一些延時函數(shù)
sleep延時方法
System.Threading.Thread.Sleep(1000); //毫秒
實現(xiàn)的是非獨占性延時函數(shù),延時過時中界面仍可響應消息:
public static void Delay(int milliSecond)
{
? ? int start = Environment.TickCount;
? ? while (Math.Abs(Environment.TickCount - start) < milliSecond)//毫秒
? ? {
? ? ? ? Application.DoEvents();//可執(zhí)行某無聊的操作
? ? }
}關(guān)于Math.Abs()
Environment.TickCount,內(nèi)部API是用DWORD GetTickCount()來實現(xiàn)的,該屬性的值從系統(tǒng)計時器派生,并以 32 位有符號整數(shù)的形式存儲。
因此,如果系統(tǒng)連續(xù)運行,TickCount 將在約 24.9 天內(nèi)從零遞增至 Int32. MaxValue ,然后跳至 Int32. MinValue (這是一個負數(shù)),再在接下來的 24.9 天內(nèi)遞增至零。
DWORD是無符號的,而 Environment.TickCount屬性返回的值是有符號的,所以有一半的值用負數(shù)表示!
C#準確延時函數(shù)
最近一段時間用C#寫了一個上位機,由于需要用到延時函數(shù),所以給大家分享一個準確延時函數(shù)
大家在網(wǎng)上一定找到過這個延時函數(shù)

用是能用,但是有一個致命問題,就是大于一分鐘的延時會陷入無限死循環(huán),于是修改了博主師傅修改了一下,修改的原理也很簡單,大家可以自己理解領(lǐng)會,以下是修改的源碼:
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;
}以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#中使用強制類型實現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換
這篇文章主要介紹了C#中使用強制類型實現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換,本文還給出了另一種方法,需要的朋友可以參考下2014-08-08

