中国开发网: 论坛: 程序员情感CBD: 贴子 883501
王中王: 我就怀疑你自认为的C实例和Owner根本不是一个东西,听老狼的吧,你是用不了恰当的方法,在错误的方向上解决了问题最终还是会有问题的
要么让线程对象(注意是对象本身,不是线程,因为线程结束和线程对象被干掉是两回事)完全自由,你生它,记它自己去灭,别去管他。要么你生它,掌管它所有的一切,别让它自杀。否则时序上会出问题。

给它自由就这样:
1、创建对象,设置FreeOnTerminate为true,
2、启动线程
3、不要再去理它。

不给它自由就这样:

1、创建对象,设置FreeOnTerminate为false,设置OnTerminate事件
2、启动线程
3、线程认为工作已经结束,会在主线程中为触发OnTerminate事件,你在事件中清理对象,清理完成设为NIL。
4、ONTerminate之前访问线程,就象老狼说的,可以单独设个状态变量,但你现在把对象指针当成状态变量也可以,只要不为NULL就可以访问。OnTerminate之后,已经为NULL了,就不能访问,可重建。

不要在线程执行函数中去做类似“owner.ft:=nil”之类的操作,对Owner使用正确与否不说,在线程中做这个事,保证不了其它线程(主线程)不出时序问题。
http://wangzw.wordpress.com/
个性化台历、日历制作
http://shop33697570.taobao.com/

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录