![]() |
Dienst mit 100% CPU-Last
Hallo,
habe folgenden Test-Service geschrieben:
Delphi-Quellcode:
Läßt sich registrieren und starten - nur hat das Teil durchgehend 100% CPU-Last.
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; Weiß einer warum? |
Re: Dienst mit 100% CPU-Last
versuch mal in die while-Schleife ein sleep(1) reinzumachen
|
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 |
Re: Dienst mit 100% CPU-Last
Mach aus dem
Delphi-Quellcode:
ein
ServiceThread.ProcessRequests(False);
Delphi-Quellcode:
und gut. ;)
ServiceThread.ProcessRequests(True);
MfG freak |
Re: Dienst mit 100% CPU-Last
Zitat:
Den Code habe ich übrigens von ![]() Sollte man das dort ändern, oder war ich zu blöde zum lesen? |
Re: Dienst mit 100% CPU-Last
Zitat:
MfG freak |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz