Ohne mir das alles genauer angeschaut zu haben, würde ich im
Delphi-Quellcode:
for I := 0 to 19 do begin
if Terminated then begin
Self.Free;
Break;
end;
das Self.Free entfernen.
Wenn du erreichen willst, das sich der Thread selbst frei gibt, dann verwende
FreeOnTerminate := True;