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

Материал из DRKB

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

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

procedure Delay(ATimeout: Integer);
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;


Author: jack128
Source: Взято из http://forum.sources.ru
ID: 02033