F
forza
Unregistered / Unconfirmed
GUEST, unregistred user!
我在主程序中启动一个线程
Trd_Scan:=TScanIP.Create(IP_base1,IP_end1,IP_base2,IP_end2,IPT);
在procedure TScanIP.Execute中又启动了另外的线程:
procedure TScanIP.Execute;
begin
..................
..................
UserGroup := TuserGroup.Create(false);
end;
这是一个扫描的过程。在这个过程中,我希望通过一个按钮来中止它的扫描工作
。
现在的问题是,我不知道如何才能安全的停止这两个线程。
对于trd_scan正在运行时,而UserGroup尚没有启动时,可以停止,但是当UserGr
oup也启动后,就出现错误了。
我使用:
procedure TForm1.Btn_StopClick(Sender: TObject);
begin
statusBar1.panels[1].text := '扫描已停止';
try
if assigned(trd_scan) then
begin
trd_scan.Suspend ;//不加这句好象也会报错
trd_scan.Terminate ;
end;
{
if assigned(UserGroup) then
begin
UserGroup.Suspend;
Usergroup.terminate;
end;
}
Btn_Start.enabled:= true;
exit;
except
MessageBox(handle,'线程已不存在!','提示',MB_OK+MB_ICONINFORMATION);
end;
但是当UserGroup运行起来之后,我就不知道如何停止它了。“线程已不存在”的
提示框会出现。
如何解决,很急。在线等
Trd_Scan:=TScanIP.Create(IP_base1,IP_end1,IP_base2,IP_end2,IPT);
在procedure TScanIP.Execute中又启动了另外的线程:
procedure TScanIP.Execute;
begin
..................
..................
UserGroup := TuserGroup.Create(false);
end;
这是一个扫描的过程。在这个过程中,我希望通过一个按钮来中止它的扫描工作
。
现在的问题是,我不知道如何才能安全的停止这两个线程。
对于trd_scan正在运行时,而UserGroup尚没有启动时,可以停止,但是当UserGr
oup也启动后,就出现错误了。
我使用:
procedure TForm1.Btn_StopClick(Sender: TObject);
begin
statusBar1.panels[1].text := '扫描已停止';
try
if assigned(trd_scan) then
begin
trd_scan.Suspend ;//不加这句好象也会报错
trd_scan.Terminate ;
end;
{
if assigned(UserGroup) then
begin
UserGroup.Suspend;
Usergroup.terminate;
end;
}
Btn_Start.enabled:= true;
exit;
except
MessageBox(handle,'线程已不存在!','提示',MB_OK+MB_ICONINFORMATION);
end;
但是当UserGroup运行起来之后,我就不知道如何停止它了。“线程已不存在”的
提示框会出现。
如何解决,很急。在线等