Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dienst mit 100% CPU-Last (https://www.delphipraxis.net/78467-dienst-mit-100-cpu-last.html)

Catbytes 5. Okt 2006 14:03


Dienst mit 100% CPU-Last
 
Hallo,

habe folgenden Test-Service geschrieben:

Delphi-Quellcode:
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TService1.ServiceExecute(Sender: TService);
begin
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(False);
  end;
end;
Läßt sich registrieren und starten - nur hat das Teil durchgehend 100% CPU-Last.

Weiß einer warum?

Angel4585 5. Okt 2006 14:11

Re: Dienst mit 100% CPU-Last
 
versuch mal in die while-Schleife ein sleep(1) reinzumachen

Der_Unwissende 5. Okt 2006 14:11

Re: Dienst mit 100% CPU-Last
 
Hi,
das liegt an deiner while-Schleife, die wird immer wenn sie kann die Bedingung prüfen und prüfen und prüfen usw. Du kannst hier mehrere Dinge tun, einerseits kannst du einen bestimmten Zeitraum abwarten oder du fügst einfach in die Schleifen eine Application.ProcessMessages ein (erlaubt anderen Programmen die Nachrichtenabarbeitung), besser ist es aber immer, wenn du auf ein Ereignis/eine Nachricht warten kannst und den Prozess solange einfach schlafen legst.

Gruß Der Unwissende

freak4fun 5. Okt 2006 14:14

Re: Dienst mit 100% CPU-Last
 
Mach aus dem
Delphi-Quellcode:
ServiceThread.ProcessRequests(False);
ein
Delphi-Quellcode:
ServiceThread.ProcessRequests(True);
und gut. ;)

MfG
freak

Catbytes 5. Okt 2006 14:22

Re: Dienst mit 100% CPU-Last
 
Zitat:

Zitat von freak4fun
Mach aus dem
Delphi-Quellcode:
ServiceThread.ProcessRequests(False);
ein
Delphi-Quellcode:
ServiceThread.ProcessRequests(True);
und gut. ;)

Danke - das wars.

Den Code habe ich übrigens von diesem Thread.

Sollte man das dort ändern, oder war ich zu blöde zum lesen?

freak4fun 5. Okt 2006 14:30

Re: Dienst mit 100% CPU-Last
 
Zitat:

Zitat von Catbytes
Sollte man das dort ändern, oder war ich zu blöde zum lesen?

Ich hab da auch ne Weile dran gesessen hab dem netten MaBuSe jetzt eine PN geschickt. :D

MfG
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz