我是这么写的,但是并没有达到我需要的效果IProcess = interface
  function GetFlag: Boolean;
  procedure SetFlag(Value: Boolean);
  function GetData: Integer;
end;TProcess = class(TInterfacedObject, IProcess)
  private
    FFlag: Boolean; //FData已修改未读取时 为True;其它状态为False
    FData: True;  
  public
    function GetFlag: Boolean;
    procedure SetFlag(Value: Boolean);
    function GetData: Integer;
    constructor Create; override;
    procedure Robot;
end;TShowDataThrd = class(TThread)
  private
    FProcess: IProcess;
  protected
    procedure Execute; override;
  public
   constructor Create(AProcess: IProcess);
end;implementation{TProcess}
constructor TProcess.Create;
begin
  inherited;
  Self.FFlag := Flase;
end;procedure TProcess.Robot;
begin
  Self.FData := 0;
  
  repeat
    while Self.FFlag do Sleep(1);
    Inc(Self.FData);
    Self.FFlag := True;
  until Self.FData < 1000;  Self.FFlag := False;
end;function TProcess.GetFlag: Boolean;
begin
  Result := Self.FFlag;
end; procedure TProcess.SetFlag(Value: Boolean);
begin
  Self.FFlag := True;
end;function TProcess.GetData: Integer;
begin
  Result := Self.FData;
end;
{TShowDataThrd}
constructor TShowDataThrd.Create(AProcess: IProcess);
begin
  inherited Create(True);
  Self.FProcess := AProcess;
end;procedure TShowDataThrd.Execute; 
begin
  try
  while not Terminated do
  begin
    while not Self.FProcess.GetFlag do Sleep(1);
    
    //... Show Data
    Self.FProcess.SetFlag(False);
  end;
  except 
    Terminate;
  end;
end;--------------------------------------------------
// 启用的地方
procedure TForm1.Button1Click(Sender: TObject);
var
  Prcs: TProcess;
  Thrd: TShowDataThrd;
begin
  Prcs := TProcess.Create;
  Thrd := TShowDataThrd.Create(IProcess(Prcs));  try
    Thrd.Resume;
    Prcs.Robot;
  finally
    Thrd.Free;
    Prcs.Free;
  end;  
end;