Es sollte reichen, wenn du die Instanzen
nach dem
inherited
freigibst.
Delphi-Quellcode:
destructor TFindSnapPointsThread.Destroy;
begin
inherited;
FFindSnapPoints.Free;
end;
Um hier aber etwas wirklich konkretes zu sagen, musst du dir
dringend einmal anschauen, was in
TThread.Destroy
so passiert.
In den
neueren Delphi-Versionen wird dort eben genau das alles gemacht (
Terminate
,
WaitFor
,...).
Ein Thread ruft im Destroy ganz von alleine das
TThread.Terminate auf, dann ein
TThread.WaitFor
.
Fazit: Die Thread-Klasse sauber aufbauen, dann klappt das wie von selber
Na ja. Ich hatte immer Probleme (vielleicht älteres Delphi), einen Thread einfach so freizugeben. Erst seitdem ich Terminate,WaitFor,Free aufrufe, klappt es. Vielleicht ist das ja auch Aberglaube.
Das ist bei
Delphi 7 wohl noch so, sollte aber auch durch einen Blick in
TThread.Destroy
zu klären sein, ob das wirklich nötig ist, oder ob es einfach reicht, den echten Destructor abzuwarten und dann erst alles einzureißen (s.o.)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)