C#延時(shí)函數(shù)的使用說明
C#延時(shí)函數(shù)使用
在線程中如果需要延時(shí),盡量不要使用Sleep()函數(shù),這樣會(huì)導(dǎo)致時(shí)間片切到別的線程中。
使用如下函數(shù):
? ? //Delay function ? ? public static void Delay(int milliSecond) ? ? { ? ? ? ? int start = Environment.TickCount; ? ? ? ? while (Math.Abs(Environment.TickCount - start) < milliSecond) ? ? ? ? { ? ? ? ? ? ? Application.DoEvents(); ? ? ? ? ?} ? ? }
或者:
? ? ? ? //Delay us ? Create a waitable timer ? ? ? ? [DllImport("kernel32.dll")] ? ? ? ? public static extern int CreateWaitableTimer(int lpTimerAttributes, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bool bManualReset, int lpTimerName); ? ? ? ? ? public static void UsDelay(int us) ? ? ? ? { ? ? ? ? ? ? long duetime = -10 * us; ? ? ? ? ? ? int hWaitTimer = CreateWaitableTimer(NULL, true, NULL); ? ? ? ? ? ? SetWaitableTimer(hWaitTimer, ref duetime, 0, NULL, NULL, false); ? ? ? ? ? ? while (MsgWaitForMultipleObjects(1, ref hWaitTimer, false, Timeout.Infinite,? ? ? ? ? ? ? ? ? ? ? QS_TIMER)) ; ? ? ? ? ? ? CloseHandle(hWaitTimer); ? ? ? ? }
C#3個(gè)延時(shí)函數(shù)
public static void Delays(int DelayTime = 100) { int time = Environment.TickCount; while (true) { if (Environment.TickCount - time >= DelayTime) { break; } Application.DoEvents(); Thread.Sleep(10); } } public static void Delay1(int milliSecond) { int start = Environment.TickCount; while (Math.Abs(Environment.TickCount - start) < milliSecond) { Application.DoEvents(); } } //延時(shí)程序 秒 public static bool Delay2(int delayTime) { DateTime now = DateTime.Now; int s; do { TimeSpan spand = DateTime.Now - now; s = spand.Seconds; Application.DoEvents(); } while (s < delayTime); return true; }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例
這篇文章主要介紹了c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01C#自定義繁體和簡(jiǎn)體字庫(kù)實(shí)現(xiàn)中文繁體和簡(jiǎn)體之間轉(zhuǎn)換的方法
這篇文章主要介紹了C#自定義繁體和簡(jiǎn)體字庫(kù)實(shí)現(xiàn)中文繁體和簡(jiǎn)體之間轉(zhuǎn)換的方法,通過自定義繁簡(jiǎn)轉(zhuǎn)換字庫(kù)實(shí)現(xiàn)繁體與簡(jiǎn)體轉(zhuǎn)換的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04C#實(shí)現(xiàn)軟件開機(jī)自動(dòng)啟動(dòng)的兩種常用方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)軟件開機(jī)自動(dòng)啟動(dòng)的兩種常用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-07-07WinForm實(shí)現(xiàn)移除控件某個(gè)事件的方法
這篇文章主要介紹了WinForm實(shí)現(xiàn)移除控件某個(gè)事件的方法,對(duì)C#初學(xué)者有一定的借鑒價(jià)值,需要的朋友可以參考下2014-08-08