1、挂起,不占CPU
sleep |
2、不挂起,占cpu
procedure Delay(msecs:integer); var FirstTickCount:longint; begin FirstTickCount:=GetTickCount; repeat Application.ProcessMessages; until ((GetTickCount-FirstTickCount) >= Longint(msecs)); end; |
3、定时器
procedure timerfun(handle:Thandle;msg:word;identer:word;dwtime:longword);stdcall; begin showmessage('到点了'); killtimer(handle,identer);//关闭定时器 end; //其中的identer是定时器的句柄 procedure TForm1.Button1Click(Sender: TObject); var identer:integer; begin identer:=settimer(0,0,2000,@timerfun); if identer=0 then exit; //定时器没有创建成功。 end; |
4、不占CPU不挂起
function TForm1.HaveSigned(MaxWaitTime: Cardinal): Boolean; var I:Integer; var WaitedTime:Cardinal; begin WaitedTime:=0; while (WaitedTime<MaxWaitTime) do begin SleepEx(100,False); Inc(WaitedTime,100); Application.ProcessMessages ; end end; |