Danke für deine Mühe...
Delphi-Quellcode:
for i:= ThreadList.count -1 downto 0 do
begin
(ThreadList[i] as TTestThread).terminate;
while not (ThreadList[i] as TTestThread).Terminated do
begin
sleep(200);
end;
ThreadList.Delete(i);
end;
aus dieser Schleife kommst du nicht mehr raus, da die Threads einfach stehen. Da kannst du Terminate setzen wie du willst. Terminated wird nie True, weil die Threads nicht arbeiten. Sprich Threadlist.Count bleibt immer das gleiche. Würden die Threads ganz normal weiterlaufen würde dein Konstrukt funktionieren.