线程的控制 procedure TNumThread.Execute; var i:Integer; begin FreeOnTerminate:=True;//线程结束立刻释放线程对象 For i:=0 to 5000000 do begin if Terminated then Break;//强行终止线程的时候为真 Inc(Answer,Round(Abs(Sin(Sqrt(i*87))))); Synchronize(GetAnswer); end; end; implementation uses Unit2; {$R *.dfm} var NumThread:TNumThread; procedure TForm1.btn1Click(Sender: TObject); begin NumThread:=TNumThread.Create(False); //这个false,意思是是否延时运行? end; //线程挂起 procedure TForm1.btngqClick(Sender: TObject); begin //判断线程是否存在 if Assigned(NumThread) then NumThread.Suspend; end; //线程唤醒 procedure TForm1.btnhxClick(Sender: TObject); begin if Assigned(NumThread) then NumThread.Resume; end; //线程终止 procedure TForm1.btnjsClick(Sender: TObject); begin if Assigned(NumThread) then NumThread.Terminate; end; |
|