Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#13

Re: CPU Fresser beim Warten auf ein Flag - Lösung ?

  Alt 22. Dez 2006, 10:42
Moin !

Noch ne Andere Idee ...

Diese procedure wartet x Millisekunden bevor die folgende Procedure weiter fortgesetzt wird.
Delphi-Quellcode:
procedure Snooze(Milliseconds: Integer);
var
  Tick: Int64;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + Int64(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;
Wäre es nicht möglich diese procedure so umzubauen, dass sie eben nicht auf einen Timer reagiert, sondern auf ein Flag? Weil das Teil benutzt quasi 0% CPU ...

Ich habe im Moment nur überhaupt keine Vorstellung wo ich dann an der Funktion drehen müsste, damit das mit einem Flag funzt (wenn es überhaupt geht ?!).

Greetz Dominik
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat