关于线程结束的问题

pasud5 2001-11-08 09:49:15
当程序运行到substdo2的时候主线程执行YYCThreads.Terminate
将线程结束的时候
线程怎样马上退出?因为线程可能正在执行一个很长
子程序,或者嵌套了多层的子程序,怎样才能在Terminate=true的时候吗上结束线程呢?
而且还需要在线程结束之前执行一些指定的程序

procedure YYCThread.Execute();
begin
Substdo1;
end;
procedure YYCThread.Substdo1();
begin
substdo2;
end;
procedure YYCThread.Substdo2();
begin
while true do sleep(1000);
end;
...全文
64 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphi_user 2001-11-08
  • 打赏
  • 举报
回复
利用windows api TerminateThread来结束线程。不管线程中有在执行什么,都会终止。
建议不要使用,推荐liang_z(千山一刀之忍者神龟)的方法。
因为TerminateThread结束线程的时候,在nt下不会释放堆栈。而且当线程有try finally 机制的时候也不会执行finally的代码,可能造成有些文件没有关闭等错误。
pasud5 2001-11-08
  • 打赏
  • 举报
回复
如果我在每个循环判断terminate那么会很麻烦的哦~!
而且也比较乱啊!
hellion 2001-11-08
  • 打赏
  • 举报
回复
WaitFor
liang_z 2001-11-08
  • 打赏
  • 举报
回复
你要在每个循环、子程序入口处判断Terminate
看是否应该退出
pasud5 2001-11-08
  • 打赏
  • 举报
回复
upupup

5,379

社区成员

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

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