![]() |
CPU-Auslastung minimieren
Hallo,
lt. Taskmanager hat mein Programm, wenn es einfach nur gestartet wird und noch "nix" macht, eine CPU-Auslastung von 50% (diese geht auf 0, wenn das Programm minimiert wird). Frage: Kann man die CPU-Auslastung noch irgendwie "händisch" herunter setzen? Im Quellcode selbst habe ich schon stehen:
Delphi-Quellcode:
Bringt aber auch nichts...
procedure TTMSMainForm.FormCreate(Sender: TObject);
var MainThread: THandle; begin MainThread := GetCurrentThread; SetThreadPriority(MainThread, THREAD_PRIORITY_LOWEST); Application.OnIdle:= AppUpdate; end; procedure TMainForm.AppUpdate(Sender: TObject; var Done: Boolean); begin inherited; Application.ProcessMessages; (...) end; Dank vorab und Gruß, Carsten |
Re: CPU-Auslastung minimieren
Das brint natürlich nichts. Die Priorität wirkt sich nur darauf aus, wie oft dein Thread oder Prozess Rechenzeit zugeteilt bekommt. Aber was hast du gegen die 50%? So lange der Prozess die Rechenzeit abgibt, wenn sie von anderen Prozessen benötigt wird, ist das doch in Ordnung.
|
Re: CPU-Auslastung minimieren
Wann/wo wird AppUpdate aufgerufen?
Und was macht deine Anwendung eigentlich? (ihre Oberfläche ständig neu zeichen, oder wie) |
Re: CPU-Auslastung minimieren
Hallo,
Zitat:
Erzähl' uns mal, was für ein Programm das ist, eventuell kommen wir dem Phänomen ja dann auf die Schliche. |
Re: CPU-Auslastung minimieren
Zitat:
Schmeiß das Application.Processmessages da raus - denn wenn OnIdle aufgerufen wird, ist klar dass es keine Nachrichten gibt, die verarbeitewt werden können ;) Btw.: was hast du durch die (...) abgekürzt? Das könnte eventuell auch noch den Prozessor auslasten ... |
Re: CPU-Auslastung minimieren
Zitat:
Zum Einsatz kommen neben div. Delphi-Komponenten noch für die Oberfläche div. (optische) Komponenten von ![]() ![]() Zitat:
Ein Invalidate findet von meiner Seite aus nicht statt. Gruß, Carsten |
Re: CPU-Auslastung minimieren
Zitat:
Zitat:
Hierbei bedeutet: rotes Lämpchen = kein Gerät vorhanden gelbes Lämpchen = Gerät da, Status (Bereitschaft) unbekannt grünes Lämpchen = Gerät da und bereit zur Kommunikation In einer separaten Schnittstellen-Unit (-Klasse) gibt es ein entsprechendes Property (DEVICE_OFF, DEVICE_UNKNOW, DEVICE_OK). In der AppUpdate wird lediglich der Status des Property abgefragt, mehr nicht, und das sieht dann wie folgt aus:
Delphi-Quellcode:
[5min später]
case COMInterface.DeviceState of
DEVICE_OFF: AdvDeviceGlowButton.Picture.LoadFromResourceName(HInstance, 'DEVICE_BUSY'); DEVICE_OK : AdvDeviceGlowButton.Picture.LoadFromResourceName(HInstance, 'DEVICE_OK'); DEVICE_UNKNOWN: AdvDeviceGlowButton.Picture.LoadFromResourceName(HInstance, 'DEVICE_UNKNOWN'); end; Jau, wenn ich die case-Anweisung ausklammere, dann ist die CPU-Last auf 0% im Ruhezustand. Jetzt ist die Frage, ob der TAdvDeviceGlowButton oder das LoadFromRessourceName der Übeltäter ist. :gruebel: |
Re: CPU-Auslastung minimieren
Dann leg das vom OnIdle in einen Timer.
OnIdle wird ja aufgerufen, wenn der PC nix zu tun hat ... also zumindestens wären diese 50% dann nicht schlimm, da wenn der PC andersweitig ausgelastet ist, dann dein OnIdle (gar)nicht aufgerufen wird :zwinker: |
Re: CPU-Auslastung minimieren
Zitat:
Dank an alle nochmal an dieser Stelle. |
Re: CPU-Auslastung minimieren
Du könntest auch beim OnIdle bleiben!
Hau dazu einfach ein Sleep rein! Sleep(10) müsste die Auslastung senken! MfG |
Re: CPU-Auslastung minimieren
Zitat:
|
Re: CPU-Auslastung minimieren
Du solltest auch die Resourcen vielleicht nur einmal in Bitmap-Objekte laden und diese dann beim Statuswechsel dem Picture zuweisen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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