Я не знаю куда и зачем ты смотрел но:
1. Свойство потока Terminated снаружи не видно. Как у тебя работает процедура таймера я не понимаю.
2. Это свойство не выставляется в истину после окончания Execute, да и с чего бы... смотри код ниже, он выдаёт false (по крайней мере в XE)
Форма
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
Unit2;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
FThread:TTestThread;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
FThread:=TTestThread.Create;
FThread.WaitFor;
ShowMessage(BoolToStr(FThread.Term,True));
FThread.Free;
end;
end.
поток
Код:
unit Unit2;
interface
uses
Classes;
type
TTestThread = class(TThread)
private
function GetTerm: Boolean;
{ Private declarations }
protected
procedure Execute; override;
public
property Term:Boolean read GetTerm;
end;
implementation
{ TTestThread }
procedure TTestThread.Execute;
begin
{ Place thread code here }
sleep(3000);
end;
function TTestThread.GetTerm: Boolean;
begin
Result:=Terminated;
end;
end.