Zitat von
NormanNG:
Thread-Execute wird im o.g. Fall wie eine "normale" Prozedur ausgeführt -
es passiert also kein "Freigeben während er noch läuft".
Das würde ich so nicht unterschreiben - ich habe letztens eine Anwendung geschrieben, bei der ich auch von dieser Tatsache ausgegangen bin. In den meisten Fällen ist auch genau das passiert, was du beschrieben hast - ab und zu ist jedoch Anwendung mit einer Zugriffsverletzung abgestürzt.
Erst als ich in meinem Code noch ein "WaitFor" und ein "Terminate" eingeschoben hatte lief es ohne Probleme:
Delphi-Quellcode:
for i := 0 to High(Threads) do
begin
Threads[i].Terminate;
Threads[i].WaitFor;
FreeAndNil(Threads[i]);
end;