Ersteinmal danke für die Hilfe! Doch muss ich dich leider enttäuschen. Dein Lösungsweg hilft mir erstens nicht weiter und zweitens ist er sogar ein wenig umständlich. Ein kurze Erläuterung:
Die Mehode Terminate eines TThread-Klasse macht nichts anderes, als einen boolischen Wert inerhalb der Klasse auf true zu setzen. Also genau das, was du mit Cancel gemacht hast. Deswegen kannst du einfach von auserhalb die Methode Terminate aufrufen und dann im Thread-Source den boolischen Wert Terminated abfragen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
MyThread.Terminate;
end;
procedure TMyThread.Execute;
begin
FreeOnTerminate := true;
...
if terminated then
* * exit;
...
end;
Trotzdem danke!