关于主线程获取线程结束相关信息 (c++ builder)
今天上线看了下,上次可用分押宝成功,竟然多了300多分,呵呵,这里有点小问题。借此机会,现在散点分给大家。
一开始是定义一个变量,在子线程结束前改变变量的值。在主线程中通过这个变量判断子线程是否结束。
后来遇到很多问题。比如,FreeOnTerminate = true时,线程是自动释放资源的。这样的话这个变量的值就不确定了。
所以我索性在子线程结束前将子线程的指针重置为NULL,这样通过子线程的指针判断子线程是否结束了。目前还没遇到什么问题,但不敢肯定以后会有后遗症不?希望高手看看。给点意见。
[解决办法]
沙发。。。没太看明白。。。。。
[解决办法]
方法2应该没问题,另外也可以考虑用会局变量作为标记
[解决办法]
设置FreeOnTerminate
在OnTerminate事件里统一处理啊。
[解决办法]
用临界区来标识变量;
判断子线程是否结束可以采用waitfor来进行判断
[解决办法]
TThread::WaitFor()
[解决办法]
如Form1->theard->WaitFor();
方法返回时,线程已结束运行,不过需要注意的是,
此线程的属性 FreeOnTerminate 应该为 false
否则调用此方法会发生无效句柄的错误。