好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#延时函数的使用说明

C#延时函数使用

在线程中如果需要延时,尽量不要使用Sleep()函数,这样会导致时间片切到别的线程中。

使用如下函数: 

? ? //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个延时函数 

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(); } } //延时程序 秒 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; }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

查看更多关于C#延时函数的使用说明的详细内容...

  阅读:49次