Forum: Programmieren allgemein
by Zacherl,
2. Mär 2019
Ja genau, so in der Art. Mit dem Überschreiben von .Terminated geht es noch ein wenig eleganter. Dann musst du beim Programmende .Terminate(); .WaitFor(); .Free(); aufrufen. Das FreeOnTerminate darfst du dann aber auf keinen Fall verwenden, weil es sonst wieder sein kann, dass der Thread bereits automatisch zerstört wurde.
Forum: Programmieren allgemein
by Zacherl,
2. Mär 2019
Ja, genauer gesagt trifft die Bedingung immer zu. Gründe siehe einen Post weiter oben.
Forum: Programmieren allgemein
by Zacherl,
2. Mär 2019
.Terminate() solltest du grundlegend immer vermeiden. Das erzeugt nämlich seinerseits Memory Leaks, wenn der Thread noch Speicher reserviert hat, den er nicht mehr freigeben kann. Ist beim Programmende allerdings im Grunde so oder so egal. Deine Bedingung trifft nicht zu, da .FreeOnTerminate := true zwar den Thread freigibt, nicht aber die Referenz (deine Variable) auf nil setzt.
Ich...
Forum: Programmieren allgemein
by Zacherl,
2. Mär 2019
Es gibt die Methode Thread.WaitFor(), die du verwenden kannst, um vor Terminierung des Programms auf das Ende des Threads zu warten.