для скалярного Boolean сгодится и так. посмотри на свойство Terminated и метод Terminate у TThread:
Код:
TThread = class
private
FTerminated: Boolean;
protected
property Terminated: Boolean read FTerminated;
public
procedure Terminate;
procedure TThread.Terminate;
begin
FTerminated := True;
end;
вполне естественно вызывать из основного потока методы Terminate и WaitFor для завершения и ожидания работы потока, когда в самом потоке может быть проверка Terminated, как в первом посте.