Ich habe nochmal in meinen Archiven geforstet nach einem Sleep() Ersatz ohne das der MainThread dabei einfriert und bin auf diese Perle gestoßen:
Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
{by Hagen Reddmann}
var
Tick: DWORD;
Event: THandle;
begin
Event := CreateEvent(nil, False, False, nil);
try
Tick := GetTickCount + DWORD(Milliseconds);
while (Milliseconds > 0) and
(MsgWaitForMultipleObjects(1, Event, False, Milliseconds,
QS_ALLINPUT) <> WAIT_TIMEOUT) do
begin
Application.ProcessMessages;
Milliseconds := Tick - GetTickCount;
end;
finally
CloseHandle(Event);
end;
end;
In Verbindung mit Delphi Timer bzw Iterations-Zähler sollte das Thema erfolgreich gelöst sein, hoffe ich jedenfalls