Terminate a thread without TThread.Terminate.

Hi to all,

I have designed a group of objects that do processing on a number of
files. All works well and now I want to use these objects from a
thread.

Basically I have:

procedure TThreadExecute.Execute;
var
                LaunchHandler : TLaunchHandler;
begin
                LaunchHandler := nil;
                try
                         LaunchHandler := TLaunchHandler.Create;
                         LaunchHandler.ExecuteConvertProcess;
                finally
                         LaunchHandler.Free;
                end;
end;

Now from my main form, while the ExecuteConvertProcess is running, I
may want to terminate the thread (since it is taking to long or the
user has wrongly selected the files to process). Since I do not have a
loop of any sort that checks .Terminate flag, how do I clean up the
thread and terminate cleanly.

I know there is a TerminateThread API call.

I am a bit reluctant to change my objects (i.e LaunchHandler calls
another object that calls a file processing object etc). What is the
best way forward?

TIA
SQ.