登陆

最好的延时手法

延时有三种一个是Sleep 还有就是用TTimer,还有就是GetTickCount(之前不知道)

TTimer是我现在最常用的 不过现在发现了更好的!那就是GetTickCount

刚在猫猫的博客上发现的 这个是个好东西!

delphi代码
  1. GetTickCount函数   
  2.   
  3.   在主程序中延时,为了达到延时和响应消息这两个目的,GetTickCount()构成的循环就是一种广为流传的方法。例如:   
  4.   
  5. procedure Delay(MSecs: Longint);   
  6. //延时函数,MSecs单位为毫秒(千分之1秒)   
  7. var  
  8.   FirstTickCount, Now: Longint;   
  9. begin  
  10.   FirstTickCount := GetTickCount();   
  11.   repeat  
  12.     Application.ProcessMessages;   
  13.     Now := GetTickCount();   
  14.   until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);   
  15. end;   
  16.   

经过自己加入程序的测试很糟糕!!!!系统占用资源超大!

表明这段代码不适用

下面这段代码才是最合适的Delay!

说实话Delay也并不是想象中的那么好~在Delay的时候 程序执行其他都不行的!

Delphi代码
  1. procedure Delay(MSecs :Longint);   
  2. var    
  3.   Tick: DWord;   
  4.   Event: THandle;   
  5. begin  
  6.   Event := CreateEvent(nil, False, False, nil);   
  7.   try  
  8.     Tick := GetTickCount + DWord(msecs);   
  9.     while (msecs > 0and (MsgWaitForMultipleObjects(1, Event, False, msecs, QS_ALLINPUT) <> WAIT_TIMEOUT) do  
  10.     begin  
  11.       Application.ProcessMessages;   
  12.       msecs := Tick - GetTickcount;   
  13.     end;   
  14.   finally  
  15.     CloseHandle(Event);   
  16.   end;   
  17. end;  

Tags: delphi, 延时, delphi延时

« 上一篇 | 下一篇 »

相关文章