Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Prüfen ob Thread noch existiert
>M@steR< - So 07.10.12 16:51
Titel: Prüfen ob Thread noch existiert
Gelöscht
jaenicke - So 07.10.12 17:26
Es gibt nur zwei Möglichkeiten:
Entweder FreeOnTerminate oder eine externe Variable, die noch auf das Threadobjekt zugreift. Beides geht nicht, da du nie weißt wann der Pointer durch die Freigabe schon ungültig ist.
Was stattdessen sinnvoll ist, lässt sich so nicht sagen, dafür müsstest du genauer erklären was du damit bezweckst. Eine Möglichkeit wäre das Event OnTerminate des Threads zu benutzen.
>M@steR< - So 07.10.12 17:52
Gelöscht
Narses - So 07.10.12 18:05
Moin!
Wie
jaenicke schon vorgeschlagen hat, dürfte die einfachste Version sein:
- Thread beim Erzeugen in eine Liste stellen
- Beim OnTerminate des Threads diesen wieder aus der Liste entfernen
Damit sind nur Threads in der Liste, die noch "leben". :idea:
cu
Narses
haentschman - So 07.10.12 18:28
Zitat: |
Was ich erreichen möchte ist, dass ich den Thread durch klicken auf einen Button Pausieren / Resumen kann. |
... aber nicht mit Suspend und Resume sondern über eine Flagvariable des Threads die von außen gesetzt wird und damit der abzuarbeitende Code übersprungen wird. Der Thread läuft zwar aber tut nix. Suspend und Resume kann manchmal komische Effekte hervorrufen weil man den Thread nicht zu einem definierten Zustand anhällt. Siehe hier:
http://www.delphipraxis.net/166260-thread-suspend-und-resume-deprecated.html
>M@steR< - So 07.10.12 20:47
Gelöscht
jaenicke - Mo 08.10.12 05:35
Statt einer reinen Flagvariablen kann man auch mit Events arbeiten. Das lässt sich prinzipiell genauso verwenden, aber ist threadsicher und man kann gezielt darauf warten, der Thread muss also nicht pollen. Zudem kann man allen Threads noch ein weiteres Event verpassen, mit dem alle abgebrochen werden (z.B. Programmende).
Stichworte: CreateEvent, SetEvent, WaitForSingleObject, WaitForMultipleObjects
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!