Einen Thread nur mit 'Terminate' zu beenden und dann zu erwarten, das er auch wirklich beendet wurde ist ... mutig ...
'Terminate' sagt dem Thread nur, das er sich beenden *soll*. Du musst dann noch warten, bis er beendet *ist*. Das machst Du mit 'WaitFor', also so etwa:
Delphi-Quellcode:
With MyThread do begin
Terminate;
WaitFor;
// Free
End;
Im Disconnect des Servers prüfst Du nicht, ob 'IndexOf' einen gültigen Wert zurückliefert. Wozu dient denn fClientList? Was macht der Server sonst noch? Liegt es wirklich an diesem Code-Teil?