C#延時(shí)函數(shù)的使用說(shuō)明
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-01
C#自定義繁體和簡(jiǎn)體字庫(kù)實(shí)現(xiàn)中文繁體和簡(jiǎn)體之間轉(zhuǎn)換的方法
這篇文章主要介紹了C#自定義繁體和簡(jiǎn)體字庫(kù)實(shí)現(xiàn)中文繁體和簡(jiǎn)體之間轉(zhuǎn)換的方法,通過(guò)自定義繁簡(jiǎn)轉(zhuǎn)換字庫(kù)實(shí)現(xiàn)繁體與簡(jiǎn)體轉(zhuǎn)換的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
關(guān)于C#中ajax跨域訪問(wèn)問(wèn)題
最近做項(xiàng)目,需要跨域請(qǐng)求訪問(wèn)數(shù)據(jù)問(wèn)題。下面通過(guò)本文給大家分享C#中ajax跨域訪問(wèn)代碼詳解,需要的朋友可以參考下2017-05-05
C#實(shí)現(xiàn)軟件開(kāi)機(jī)自動(dòng)啟動(dòng)的兩種常用方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)軟件開(kāi)機(jī)自動(dòng)啟動(dòng)的兩種常用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-07-07
WinForm實(shí)現(xiàn)移除控件某個(gè)事件的方法
這篇文章主要介紹了WinForm實(shí)現(xiàn)移除控件某個(gè)事件的方法,對(duì)C#初學(xué)者有一定的借鑒價(jià)值,需要的朋友可以參考下2014-08-08

