Hallo OrallY!
Das Problemm kenne ich, und es ist auch leicht zu lösen. Das könnte zum Beispiel ein Boolean-Wert in der Thread-Klasse sein, den gibst du den Namen Cancel und setzt ihn als Public Wert ein. Beim Start des Threades setzt du diesen Wert auf false. Wenn der User nun auf den Abbrechen-Button Klickt, wird der Cancel-Bool auf true gesetzt. Jetzt musst du nur noch in deiner Execute-Prozedur eine Abfrage erstellen, ob der Thread geschlossen werden soll oder nicht.
Das sieht dann in Etwa so aus:
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
FreeOnTerminate := true;
Cancel := false;
...
if Cancel then begin
Terminate;
exit;
end;
...
end;
Dein Problem dürfte dann nicht auftreten. Wenn du aber den Thread erneut starten willst musst du ihn aber erneut erstellen! Ansonsten gibt es ne dicke fette Fehlermeldung.
Tschö!