一个蛮无聊的函数,在主线程中非阻塞的方式延时一段时间

在主线程中非阻塞的方式延时一段时间,仅适用于 Windows 平台:

 procedure MsgWait(ADelay:Integer;ABreakOnAppQuit:Boolean);
  var
    AHandle:THandle;
    T:Cardinal;
  begin
  while ADelay>0 do
    begin
    T:=GetTickCount;
    if MsgWaitForMultipleObjects(0,AHandle,false,ADelay,QS_ALLINPUT)=WAIT_OBJECT_0 then
      begin
      Application.ProcessMessages;
      if Application.Terminated and ABreakOnAppQuit then
        Break;
      end;
    Dec(ADelay,GetTickCount-T);
    end;
  end;

 

分享到: