假设一个线程:
type
  TMyThread = class(TThread)
  protected
    procedure Execute; override;
  end;procedure TMyThread.Execute;
var
  i: Integer;
begin
  FreeOnTerminate := True; 
  for i := 0 to 500000 do
  begin
    Form1.Canvas.Lock;
    Form1.Canvas.TextOut(10, 10, IntToStr(i));
    Form1.Canvas.Unlock;
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyThread.Create(False);
end;如果运行该线程后,在该线程运行中,我需要终止其运行,不是将其挂起,如何实现,

解决方案 »

  1.   

    忘记写,是一个变量  for i := 0 to 500000 do
      begin
      if dostop then
      begin
      Form1.Canvas.Lock;
      Form1.Canvas.TextOut(10, 10, IntToStr(i));
      Form1.Canvas.Unlock;
      end else exit
      end;
      

  2.   

    假设button1的标题是:“开始”,button2:“结束” ,点击button2之后才终止线程,如何实现
      

  3.   

    假设button1的标题是:“开始”,button2:“结束” ,点击button2之后才终止线程,如何实现
      

  4.   


    procedure TMyThread.Execute;
    var
      i: Integer;
    begin
      FreeOnTerminate := True;  
      for i := 0 to 500000 do
      begin
      if AFlag then exit;
      Form1.Canvas.Lock;
      Form1.Canvas.TextOut(10, 10, IntToStr(i));
      Form1.Canvas.Unlock;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      TMyThread.Create(False);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      AFlag = True;
    end;