Delphi多线程退出的问题!高手帮帮忙!

procedureTForm1.Button2Click(Sender:TObject);beginiftrim(Edit2.Text)<>''thenMemo1.Lin... procedure TForm1.Button2Click(Sender: TObject);
begin
if trim(Edit2.Text)<>'' then
Memo1.Lines.Add(trim(Edit2.Text));
end;

procedure TForm1.TScanClick(Sender: TObject);
var
i: integer;
Sum:integer;
begin
if TScan.Caption ='线程扫描' then
begin
bool :=true;
TScan.Caption :='停止扫描';
end
else
begin
bool := False;
TScan.Caption :='线程扫描';
end;

// if bool then
begin
Memo3.Clear;
Memo2.Clear; //清空路径列表中的数据
Form1.Sta.Panels.Items[1].Text := '程序已经开始扫描,请耐心等待扫描结束';
n :=0;
Sum :=Memo1.lines.count; //计算需要检测页面总数
SetLength(Thread1,Sum); // 动态设置线程的数量
ProgressBar1.Min :=0; //设置进度栏默认为0
ProgressBar1.Max :=sum;
ProgressBar1.Step :=1;
ProgressBar1.Position :=0;
for i := 0 to Sum - 1 do //判断是否循环检测所有页面
begin
if not bool then
begin
break;//退出循环
exit;
end;
Thread1[i] := T1.Create(Memo1,Memo2,Memo3,i);
Thread1[i].OnTerminate := ThreadExit; //退出线程
//ProgressBar1.StepIt;
//sleep(30);
end;
end;
bool := False; // 关闭开关
end;

我的思路就是让他跳出循环,但好像条件不行一直都无法跳出循环也就无法停止线程! 希望高手帮我看看用什么条件让他停下来 ,这个是扫描按钮的。。
if TScan.Caption ='线程扫描' then
begin
Thread1[i] := T1.Create(Memo1,Memo2,Memo3,i);
Thread1[i].OnTerminate := ThreadExit; //退出线程
Form1.Sta.Panels.Items[1].Text := '程序扫描已经停止,请耐心所有线程退出';
break;//退出循环
end;
Thread1[i] := T1.Create(Memo1,Memo2,Memo3,i);
Thread1[i].OnTerminate := ThreadExit; //退出线程
//ProgressBar1.StepIt;
//sleep(30);
end;
end;
bool := False; // 关闭开关
end;

看了楼下朋友的解释 修正了一下,但还有一点毛病 就是退出线程后还有两个线程在运行 并出现两条扫描结果……
展开
 我来答
百度网友0951d78
2008-04-21 · TA获得超过1451个赞
知道小有建树答主
回答量:1727
采纳率:0%
帮助的人:1269万
展开全部
break;//退出循环
exit;
你先退出循环,再退出过程??
下面的//退出线程都没执行到
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式