procedure TMyThread.Execute;
var
  i:integer;
begin
  i:=0;
  while true do
  begin
    inc(i);
    form1.Edit1.Text:=inttostr(i);
   end;
end;procedure TForm1.btStartClick(Sender: TObject);
begin
  m_thread:=TMyThread.Create(false);
end;procedure TForm1.btStopClick(Sender: TObject);
begin
  m_thread.Terminate;
end;

解决方案 »

  1.   

    procedure TMyThread.Execute;
    var
      i:integer;
    begin
    repeat
      i:=0;
      while true do
      begin
        inc(i);
        form1.Edit1.Text:=inttostr(i);//有问题需要资源保护
       end;
    until Terminated;
    end;procedure TForm1.btStartClick(Sender: TObject);
    begin
      m_thread:=TMyThread.Create(false);
    end;procedure TForm1.btStopClick(Sender: TObject);
    begin
      m_thread.Terminate;
    end;
      

  2.   

    上面改了还是不对while true and not Terminated do
      

  3.   

    还是不对
    while not Terminated do 就好了
      

  4.   

    form1.Edit1.Text:=inttostr(i) 一般要用同步, 不过不用也没什么错, 变态的 delphi 在访问 vcl 组件时全有同步(只限windows)
      

  5.   

    BOOL TerminateThread(
      HANDLE hThread,    // handle to the thread
      DWORD dwExitCode   // exit code for the thread
    ); // 终止
    DWORD SuspendThread(
      HANDLE hThread   // handle to the thread
    ); // 挂起
      

  6.   

    var
      i:integer;
    begin
      i:=0;
      while true do
      begin
        if  Terminated  then exit;
        inc(i);
        form1.Edit1.Text:=inttostr(i);<-这里要做同步
       end;
    end;