Das FreeOnTerminate gehört in die Schleife, sonst gilt es nur für die als letztes erzeugte Thread-Instanz.
Delphi-Quellcode:
try
repeat
Thread1:= TMyThread1.Create(True);
Thread1.FreeOnTerminate := True //Wenn schon, dann gehört das hier hin.
Thread1.FDateienname:= Directory+DateienLst.Name;
Thread1.Resume;
until FindNext(DateienLst) <> 0;
finally
SysUtils.FindClose(DateienLst);
end;
end;
Du erzeugst jetzt für jede gefundene Datei einen Thread - das ist bei vielen Dateien auch wieder nicht optimal.
Daß du nicht auf das Ende der jeweiligen Threads wartest, wurde ja schon gesagt.