Thema: Delphi Systemdienst stresst CPU

Einzelnen Beitrag anzeigen

RolfPolf

Registriert seit: 15. Mär 2006
17 Beiträge
 
Delphi 2005 Personal
 
#1

Systemdienst stresst CPU

  Alt 16. Feb 2007, 11:26
Hallo,
ich wage mich zum ersten Mal an Dienste heran und habe dazu mal alles was ich so an Tutorials und Foreneintragen gefunden habe abgegrast. Die ersten Testbeispiele funktionieren soweit auch (z.B.: dieses).

Jetzt habe ich mal ein ganz simples Bsp selber erstellt, welches über einen TTimer verfügt der alle x Sekunden eine Logdatei aktualisiert. Wenn ich den Dienst so starte, dann wird er nach dem Start sofort wieder beendet, weil er sich im Leerlauf befindet. Deshalb habe ich dann die folgende Ereignisprozedur eingebaut:

Delphi-Quellcode:
procedure TService1.ServiceExecute(Sender: TService);
begin
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(False);
  end;
end;
Die läuft auch, allerdings verursacht dieser Dienst dann mal permanent 50% CPU-Auslastung.
OK, die while-Schleife ist dafür verantwortlich. Lässt man sie allerdings weg, dann wird der Dienst nach dem Start auch sofort wieder beendet, weil er sich wieder im Leerlauf befindet. Wenn ich ihn in der While-Schleife mit Sleep schlafen lege, dann kann er nicht mehr beendet werden.

Ist es tatsächlich erforderlich, einen eigenen Thread zu erzeugen wenn man nur einen Dienst haben möchte, der alle 10 Sekunden eine Prozedur aufruft ohne dabei die CPU auszulasten? Oder wo ist da mein Denkfehler?
Danke für ein "auf die Sprünge helfen",
RolfPolf
  Mit Zitat antworten Zitat