如何正常终止线程???

dongteng 2003-08-24 10:21:58
我开了5个线程,每个线程都要处理许多包括数据库存储在内的大量操作,当我用.FREE终止时齐慢无比,甚至失去相应。于是我用了比较暴力的方法Terminate,但是经常提示出现错误。于是我想屏蔽掉错误就:
try
xc.Terminate;
sleep(500);
form1.Close;
except
application.Terminate;
end;
可是当处理量比较大的时候终止还是会出现错误!!!
我到底应该怎么避免错误提示的出现呢?????
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
karach 2003-08-24
  • 打赏
  • 举报
回复
高手就是高手
我……
tonylk 2003-08-24
  • 打赏
  • 举报
回复
xc.Terminate;
xc.WaitFor();//等待线程内部真正结束了,然后再释放。
xc.Free;

procedure MyThread.Execute();
begin
while not Terminated do begin
dosth1();
if Terminated then exit;
dosth2();
if Terminated then exit;
end;
end;
LKJ99 2003-08-24
  • 打赏
  • 举报
回复
同意: zhoutian618(周天) 说法!

要在EXECUTE中经常检查是否Terminated标志,如果是TRUE,当然要退出运行当前的代码,
否则出问题是非常正常的!
huojiehai 2003-08-24
  • 打赏
  • 举报
回复
1、VOID ExitThread(

DWORD dwExitCode // exit code for this thread
);

2、
VOID ExitThread(

DWORD dwExitCode // exit code for this thread
);
dongteng 2003-08-24
  • 打赏
  • 举报
回复
楼上的写的具体一点好吗??我真的不会!!!!
zhoutian618 2003-08-24
  • 打赏
  • 举报
回复
这样也可以啊。

只是在EXECUTE方法中要判断线程是否终止了,
如果终止了就退出操作啊。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧