Альтернатива для Sleep(), но чтобы приложение не зависало

Previous  Top  Next

    
 

 

Часто требуется организовать задержку в выполнении кода, но что бы при этому приложение не зависало, могло реагировать на сообщения Windows, в часности могло перерисовываться..

Code:

procedure Delay(ATimeout: Integer);

{©Drkb v.3(2007): www.drkb.ru}

 

var

t: Cardinal;

begin

while ATimeout > 0 do

begin

   t := GetTickCount;

   if MsgWaitForMultipleObjects(0, nil^, False, ATimeOut, QS_ALLINPUT) = WAIT_TIMEOUT then

     Exit;

   Application.ProcessMessages;  // Пришли новые сообщения Windwos , обрабатываем их..

   dec(ATimeout, GetTickCount - t);

end;

end;

 

 
 
Автор: jack128

Взято из http://forum.sources.ru

©Drkb::02033