Du könntest eine Stille
Exception auslösen und diese in der Execute-Funktion abfangen.
Delphi-Quellcode:
type
EThreadExit =
class(EAbort);
procedure TMyThread.HandleException
begin
// System.ExceptObject liefert die Aktuelle Exception
Application.ShowException(ExceptObject);
end;
procedure TMyThread.Execute;
begin
try
while (
not Terminated)
and (
not Application.Terminated)
do
begin
AktionenAusfuehren;
end;
except
on E: EThreadExit
do ;
// nichts machen
on E:
Exception do
Synchronize(HandleException);
end;
end;
procedure TMyThread.AktionenAusfuehren;
begin
// ...
if ThreadAbbrechen
then
raise EThreadExit.Create;
// ...
end;