假设一个线程:
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;如果运行该线程后,在该线程运行中,我需要终止其运行,不是将其挂起,如何实现,
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;如果运行该线程后,在该线程运行中,我需要终止其运行,不是将其挂起,如何实现,
begin
if dostop then
begin
Form1.Canvas.Lock;
Form1.Canvas.TextOut(10, 10, IntToStr(i));
Form1.Canvas.Unlock;
end else exit
end;
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;