Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Delay ja aber wie in DLL ?

  Alt 1. Feb 2007, 11:23
Hallo,

Emil will wahrscheinlich gar keine Nachrichten in der DLL verarbeiten, sondern nur ein Delay einbauen - und dabei soll die Nachrichten-Warteschlange vom main thread weiter bedient werden. Das kann seine Tücken haben, aber eine solche Warteschleife ist natürlich auch ohne die Unit Forms möglich:

Delphi-Quellcode:
procedure Delay(ticks: Cardinal);
var
  Msg: TMsg;
  tc: Cardinal;
begin
  tc := GetTickCount;
  while (GetTickCount - tc) < ticks do
    if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then begin
      TranslateMessage(Msg);
      DispatchMessage(Msg);
    end;
end;
Getippt und nicht getestet. So werden alle Nachrichten weiterverarbeitet - man könnte das einschränken. Wenn überhaupt keine Nachrichten verarbeitet werden sollen, dann kann man gleich Sleep() nehmen.

Freundliche Grüße
  Mit Zitat antworten Zitat