为什么线程结束了,而线程对象却不等于Nil???(50分)

  • 主题发起人 主题发起人 xself
  • 开始时间 开始时间
X

xself

Unregistered / Unconfirmed
GUEST, unregistred user!
线程结束了,可为什么判断线程对象<>NIL时却还是TRUE??
 
freeonterminate:=true;
 
应该是的,系统不会给你将变更置为NIL
 
加上后在关闭主窗口时弹出一大堆错误信息,我也找不到错出在何处,删了这一行就好了
 
对象其实就是一个指针,对象Free的时候是不会自动把指向它的指针设为nil的
要检测对象是否释放可以override类的析构方法Destroy在里面添加一些代码
比如Showmessage之类的,就可以知道究竟释放了没有,什么时候释放
 
我在Destroy加了调试信息,的确Free了,只是对象还是不是Nil
 
你是不是在关闭窗口的时候又释放线程了?
加上freeonterminate:=true;则线程结束之后会自动释放,所以第二次free的时候就出错了
 
ZT:加上后在关闭主窗口时弹出一大堆错误信息,我也找不到错出在何处,删了这一行就好了
这种情况有两种可能性,一是,窗口已经释放,线程还在运行,并且调用了窗口
二是,线程已经释放窗口没释放并且调用线程
两种情况都会引发Access violation错误
你可以在做调用操作时增加检查,或者增加标识。
 
多人接受答案了。
 
后退
顶部