如何释放掉线程

yqdragon 2005-09-09 08:24:20
问题1、如何检测一个线程是否存在?若存在如何释放掉

我在线程的execute中代码用
while not terminate do
begin
//freeOnTerminated := false; //加不加该句无关
end;

如何释放?
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqdragon 2005-09-11
  • 打赏
  • 举报
回复
我在WIN2000系统下,在线程中用
我在线程的execute中代码用
while not terminate do
begin
//freeOnTerminated := false; //该句未用
end;
在主程序中用
FreeAndNil(rThread);
线程可以终止,再重新创建该同名线程不会有问题,但在WINXP系统就不可以
谁知道什么原因啊??

桂林哈秋 2005-09-10
  • 打赏
  • 举报
回复
学习学习,顶一下!!!
avenir 2005-09-09
  • 打赏
  • 举报
回复
通常,若线程的execute中代码用
while not terminate do
begin
。。。。。
end;
时,FreeOnTerminated=true 有时在同步方面存在问题
我一般这么来 FreeOnTerminated:=false;
结束时
aaaa.Terminate;
aaaa.WaitFor; //保证线程执行完毕,已经退出了Execute过程
aaaa.Free;
pcfans007 2005-09-09
  • 打赏
  • 举报
回复
FreeOnTerminated := True;释放的目标是对象
gobiz 2005-09-09
  • 打赏
  • 举报
回复
在线程的Execute事件里加上FreeOnTerminated := True;

5,391

社区成员

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

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