Wenn du den Text der Hilfe auch beherzigst, und zwar ganz exakt und penibel
Zitat:
.. fordert die Methode Terminate nur an, dass der Thread beendet wird. So kann der Thread vor Beendigung noch sämtliche Bereingungen durchführen.
Es soll eben
NICHT beim Aufruf der Terminate Methode bereinigt werden (so wie du das aber machst), sondern der Thread soll damit signalisiert werden, sobald es geht sich beenden und die Bereinigung durchführen.
Kleine Gedankenstütze wie das gedacht wäre
Delphi-Quellcode:
procedure TMyThread.Execute;
var
SomeInstance: TObject;
begin
SomeInstance := TObject.Create;
while not Terminated do
begin
// der Thread macht hier seine Arbeit
end;
// Aufräumen
SomeInstance.Free;
end;
Nachtrag:
Das Aufrufen von Terminate vom ThreadKontext selber ist auch total überflüssig. Die Terminate-Methode soll eine Möglichkeit geben, dem laufenden ThreadKontext zu signalisieren, dass er sich doch bitte beenden soll (sobald als möglich).
Also das ist wie wenn dich jemand darum bittet, dein aktuelles Telefongespräch zu beenden. Würdest du dich auch selber bitten das Gespräch zu beenden?