Hi Mario,
Ist eigentlich Egal, da Delphi das automatisch
machen sollte.
Ist die Eigenschaft des Threads FreeOnTerminate
auf True gesetzt wird der Thread automatisch freigegeben,
wenn Execute des Threads beendet wird. Ist dieses nicht der
Fall - muss im Hauptkontext (da wo der Thread erzeugt wurde)
dieser auch mit Free freigegeben werden.
Mit Free() erhält der Thread die Info, seine Ausführung zu
beenden. Solange wartet Thread.Destroy() (wird von Free aufgerufen).
Interessant wirds erst, wenn in der Ausführung eine
Endlosschleife eingebaut ist, die NICHT die Eigenschaft
Terminated abfragt.
in der Execute-Methode könnte stehen:
while not terminated do begin
… tue irgentwas
end;
falsch wäre
while true do begin
… tue irgentwas
end;
Ist natürlich abhängig davon, was der Thread machen soll.
Ich würde wie folgt vorgehen:
Bei Erstellung des Thread FreeOnTerminate auf False;
vor Freigabe des Threads abfragen, welchen Status er hat und
ihn dann wie gewünscht freigeben.
ich Hoffe, Du kannst damit was anfangen.
Mathias
Und wenn der Thread noch läuft oder Suspended ist?
Danke
Mario