var Form1: TForm1; MyThread:TMyThread; mwCount:word; mbMode:byte;
implementation
{$R *.dfm}
constructor TMyThread.Create; begin inherited Create(True); FreeOnTerminate := False; end;
procedure TMyThread.s_ThreadStep; begin inc(mwCOunt); //............ Form1.Label1.Caption:=IntToStr(mwCount); end;
procedure TForm1.Button1Click(Sender: TObject); // 单步 mbMode:=1; if MyThread.Suspended then MyThread.Resume end;
procedure TForm1.Button2Click(Sender: TObject); // 连续运行 begin mbMode:=2; if MyThread.Suspended then MyThread.Resume end;
procedure TForm1.Button3Click(Sender: TObject); // 转单步后停止 begin mbMode:=1; end;
procedure TForm1.FormCreate(Sender: TObject); begin MyThread:=TMyThread.Create; end;
procedure TForm1.FormDestroy(Sender: TObject); begin with MyThread do begin if not Suspended then Suspend; Terminate; { 销毁之前终止线程执行 } Destroy; end; end;
procedure TMyThread.Execute; begin repeat s_ThreadStep; if mbMode=1 then MyThread.Suspend; until False; end;
procedure TForm1.FormDestroy(Sender: TObject); begin with MyThread do begin if not Suspended then Suspend; Terminate; { 销毁之前终止线程执行 } Destroy;//*************改成inherited就好了*************** end; end;
----------------------------------------------
-