Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Timer/Programm Priorität (https://www.delphipraxis.net/3550-timer-programm-prioritaet.html)

flomei 18. Mär 2003 15:29


Timer/Programm Priorität
 
Ich weiss, dass Timer eine sehr niedrige Priorität haben. Kann man das ändern? Stelle man sich folgendes vor: Der Timer muss sofort auf ein Ereignis reagieren. Manchmal dauert es ar***lange, bis mein Timer reagiert.
Oder überhaupt mein ganzes Programm. Das muss auch funktionieren, wenn mehrere Prozesse im Hintergrund laufen.
Man stelle sich folgendes vor: Ein Programm soll alles speichern, was geöffnet ist und dann den Rechner herunterfahren wenn der Lüfter kaputt ist und die CPU Temperatur sprunghaft ansteigt. Würde der Timer bei Vollauslastung auch nur zwei, drei Sekunden zu spät reagieren wäre vielleicht eine Menge Arbeit verloren und der Rechner kaputt. Das Programm hätte das vielleicht verhindern können. Ich hoffe jedem ist jetzt klar was ich mit Priorität meine.
Hat einer eine Idee?

Thx!

MfG Florian

Chriss 18. Mär 2003 18:21

ich weiss ja nicht, aber eigentlich sollte der rechner ausgehen, wenn die CPU ZU heiss wird, jedenfalls meine ich, dass so gelernt zu haben :wink:
was du aber noch willst ist, dass alles gespeichert wird...
WAS soll gespeichert werden?! einige Programme brauchen ihre Zeit, bis der Speichervorgang beendet ist, besonders bei aufwendigeren...

Luckie 18. Mär 2003 18:26

Re: Timer/Programm Priorität
 
Zitat:

Zitat von flomei
Ich weiss, dass Timer eine sehr niedrige Priorität haben. Kann man das ändern?

Nein. Und wenn, wüßte ich nicht wie.

Darty 18. Mär 2003 18:32

Kauf Dir einen Asus Board :) Der hat so ne C.O.P. Funktion der dann bei bestimmten Grad ausschaltet.
Aber nur damit ich jetzt besser verstehe. Timer haben niedrige Prioritäten ? Meinst du möchtest Dein Programm vor allen anderen Programmen die laufen als "wichtig" hinstellen oder ? Wenn ja, dann leiden die anderen Programmen aber darunter ..

Luckie 18. Mär 2003 18:41

Nein, das verhält sich so. Bei jedem Timer-Ereignis wird an das fenster ein WM_TIMER gesendet. Und diese Nachricht hat eine sehr niedriger Priorität in der Message-Queue. Wenn jetzt also noch andere Nachrichten anstehen, werden diese zu erst abgearbeitet und dann kommt WM_TIMER dran. Und wenn die anderen Nachrichten länger brauchen, um abgearbeitet zu werden, dann kann es schon mal dauern bis WM_TIMER abgearbeitet wird. Deswegen soll man WM_TIMER nie auf Gleichhiet mit einer Zeit prüfen, sondern immer mit größer.

Chewie 18. Mär 2003 18:45

Die Nachrichtenschleife eines Programmes wird doch von diesem selbst verwaltet. Also könnte man doch versuchen, eine WM_TIMER-Nachricht mit hoher Priorität zu bearbeiten und die übrigen auf einen zweiten Stapel legen, der nur bearbeitet wird, wenn keine Timer-Nachrichten vorliegen.

Luckie 18. Mär 2003 18:48

Das schon, nur wird die Nachrichtenschleife vom Fenster von der Nachrichtenschlange von Windows gefüttert.

Chewie 18. Mär 2003 18:52

Wenn man dem entsprechenden Programm nun eine hohe Prozesspriorität gibt, dann sollten doch auch Timer-Nachrichten recht zugig verschickt werden.

Luckie 18. Mär 2003 18:57

Nein.

Chewie 18. Mär 2003 19:11

Wieso nicht? Falls das heißen soll, Windows sortiert nicht nach Prozesspriorität sondern nach Typ der Nachricht, wofür gibt es dann die Prozesspriorität?
Oder sagt diese nur etwas über den Anzahl eines Prozesses an der Systemzeit aus, nicht aber über deren Behandlung in der Nachrichtenschleife von Windows?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr.
Seite 1 von 2  1 2      

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