![]() |
CPU-Auslastung bei Berechnungen regeln
Hallo,
Ich brauche eine Möglichkeit, die CPU-Auslastung, die eine Anwendung während Berechnungen verursacht, zu regeln, also reduzieren zu können. Wenn ein Programm beispielsweise sehr viele Berechnungen durchführen muss (oder z.B. eine große Datei schreibt), die ein paar Minuten dauern, verursachen solche Programme bei mir immer 98bis99 % CPU-Auslastung. Das Programm selbst reagiert dabei überhaupt nicht mehr und das ganze System wird verlangsamt. Ich habe schon versucht die Priorität des ganzen Programmes mit SetPriorityClass runterzuregeln, aber das hat nichts genützt. Ich benutze Delphi 6. tia, DarkLord0 |
Re: CPU-Auslastung bei Berechnungen regeln
Zitat:
Wenn du die Priorität herabsetzt, lastet das Programm wenn es alleine ist weiterhin die CPU voll aus, aber sobald ein anderes Programm Rechenzeit benötigt bekommt es den Vorzug. |
Re: CPU-Auslastung bei Berechnungen regeln
Versuch mal diesen Befehl in die Prozessorlastige Methode einzubauen,
evtl. direkt in die Schleifen, falls vorhanden.
Delphi-Quellcode:
Application.Processmessages;
|
Re: CPU-Auslastung bei Berechnungen regeln
Das wird an der Situation nichts ändern. Die Methode Processmessages sorgt nur dafür, dass Nachrichtenschlange abgerabeitet wird.
Wie Tubos schon gesagt hat, wenn der Prozess alleine läuft, wird er immer ca. 99% der Rechenzeit bekommen, wenn man ihn nicht bremst mit ![]() |
Re: CPU-Auslastung bei Berechnungen regeln
das wichtigste problem ist ja, dass die anwendung selbst nicht mehr reagiert.
wenn ich beispielsweise die berechnungen durch das klicken auf einen button auslösen lasse, wird der button weiterhin heruntergedrückt dargestellt, bis die berechnung fertig ist. das programm empfängt zwar andere (z.B. onClick) events, arbeitet diese aber erst ab, nachdem die berechnung beendet ist. das programm wird also quasi "eingefroren" (wobei änderungen, die durch die buttonclick prozedur selber gemacht werden, trotzdem dargestellt werden). Der Ansatz mit Application.Processmessages; hat übrigends leider auch nicht geholfen |
Re: CPU-Auslastung bei Berechnungen regeln
Zitat:
|
Re: CPU-Auslastung bei Berechnungen regeln
Die beste Lösung sind sicherlich Threads.
Luckie hat da ein tolles Tutorial geschrieben: ![]() |
Re: CPU-Auslastung bei Berechnungen regeln
Zitat:
danke, joe24, das war genau das, was ich gesucht habe :) |
Re: CPU-Auslastung bei Berechnungen regeln
ABER: Das ist nicht das Allheilmittel! Erstens macht dein Programm so lange niuchts, wie es Nachrichten von Windows Bekommt. Schieb es mal andauernt hin und her und du wirst sehen, was ich meine. Und zweitens kann das ungeahnte Nebeneffekte haben. Threads wären wohl wirklich die bessere und sauberere Lösung.
|
Re: CPU-Auslastung bei Berechnungen regeln
was könnten das denn für "ungeahnte nebeneffekte" sein, bzw wo würden die herrühren ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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