Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Thread und Priorität (https://www.delphipraxis.net/115951-thread-und-prioritaet.html)

Weazy 20. Jun 2008 13:08


Thread und Priorität
 
in meinem Programm verwende ich einen TThread. Mit Thread.Priority kann ich ja die Priorität des Threades festlegen. Das problem ist nun dass wenn ich die Priorität ändere während dieser läuft, so zeigt mir der Taskmanager immer noch normale priorität an. Wie kann ich die Priorität während dem laufenden Thread ändern und auch erfahren wann die Priorität geändert wird, z.b durch den Taskmanager?

Luckie 20. Jun 2008 13:12

Re: Thread und Priorität
 
Während ein Thread läuft kann man dessen Priorität nicht ändern. Das hast du ja schon selber festgestellt. Üblicherweise legt man die Prioritöät auch fest bevor man den Thread startet. Du müsstest mal probieren, was passiert, wenn du den Thread anhälst, ob du dann dessen Priorität ändern kannst.

himitsu 20. Jun 2008 13:23

Re: Thread und Priorität
 
Eigentlich müßte es sofort geändert werden, da beim Aufruf von .SetPriority (setzen von .Priority) MSDN-Library durchsuchenSetThreadPriority aufgerufen wird und bei Mißerfolg wird eigentlich auch eine Exception ausgelöst :gruebel:
(zumindestens war dieses in D7 noch so)


Und bisher konnte ich mit SetThreadPriority die Prioritär sowohl wärend der Laufzeit, als auch bei gestoppten Threads setzen.


[add]
stümmt, der Taskmanager zeigt ja des Andere an :stupid: (siehe Vjay)

Vjay 20. Jun 2008 13:24

Re: Thread und Priorität
 
Luckie bist du dir da sicher? Ich denke eher, dass er die Prozesspriorität und Threadpriorität verwechselt.

Luckie 20. Jun 2008 13:33

Re: Thread und Priorität
 
Zitat:

Zitat von Vjay
Luckie bist du dir da sicher? Ich denke eher, dass er die Prozesspriorität und Threadpriorität verwechselt.

Hm, das kann natürlich sein. Ich muss ehrlich gestehen, ich habe mich auf seine Aussage verlassen, weil ich es selber noch nicht probiert habe die Threadpriorität eines laufenden Threads zu ändern -- Mist, oder doch? Ich glaube, das habe ich doch schon gemacht in meinem Threading Tutorial. Ich glaube, heute ist nicht mein Tag. :roll:

Jedenfalls sollte man sich mal den Rückgabewert angucken den SetThreadPriority liefert bzw. bei einem Fehler GetLastError aufrufen.

Weazy 20. Jun 2008 14:40

Re: Thread und Priorität
 
hmm, ich finde bei mir niergens ein SetPriority, oder ist das eine Setter Prozedur wenn die Priorität geändert wird?

himitsu 20. Jun 2008 14:44

Re: Thread und Priorität
 
jupp, ist die Settermethode von .Priority



aber wie gesagt, Priority stetzt nur die Priorität innerhalb der Anwendung (im Verhältnis zu den anderen Threads der Anwendung)

und der Taskmanager zeigt nur die Priorität der Anwendung an (nicht der einzelnen Threads)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 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