Ach ja.....
Dann war dein erster Ansatz doch nicht so schlecht....
Delphi-Quellcode:
repeat
Application.ProcessMessages;
sleep(1); // lass den Threads auch eine Chance zu arbeiten.
until (SearchForCopy.Terminated) and (SearchForDelete.Terminated); // achtung !! Terminated abfragen, nicht Terminate aufrufen.
Dies anstelle der WaitFor eingesetzt sollte helfen.
Allerdings auch hier wichtig - FreeOnTerminate auf false lassen und am Ende selber freigeben.
Gruss