warum kannst du den Thread nicht beenden? Ruf doch TThread.Terminate auf. Im Thread prüfst du denn ob Terminated True ist und brichst dann ab.
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
...;
while not EOF() or not Terminated do
begin
...;
end;
...;
end;