资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

关于TThread线程类对象的销毁问题!

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

在多线程应用程序中,通过new方法产生一个新的线程对象,  
  TMyThread   *NewThread=new   TMyThread(false);  
  如何正确销毁这个线程呢?  
  1)如果线程的Execute方法执行完返回了,是不是该线程对象就自动销毁了呢?还需要Delete   NewThread来清理吗?  
  2)如果线程的Execute正在执行,而执行Delete   NewThread,线程会正常结束吗?  
 

网友回答:

发表者:xpdavis

TThread::FreeOnTerminate属性为true时,线程结束时自动析构  
   
  2   如果线程的Execute正在执行,而执行Delete   NewThread,线程会正常结束吗?  
  有可能不会正常结束,最保险的做法是调用TThread::WaitFor函数等待线程结束

发表者:Friecin

TMyThread   *NewThread=new   TMyThread(false);  
  NewThread->FreeOnTerminate   =   true;   //或则把这句放在TMyThread的构造函数中

发表者:Friecin

要强制销毁终线程用   NewThread->Terminate();  
  也可以用API:             TerminateThread()  
 

发表者:ZQGet

只要保证建立与销毁TThread对象在同一个线程中就行了   有两种办法:  
   
  1、在TThread对象的OnTerminate事件中填写销毁线程对象的代码,因为OnTerminate事件的代码它会切换到主线程去执行,这样就保证了建立与销毁TThread对象在同一个线程中完成  
   
  2、使用关键字Synchronized  
   
        Synchronized(new   TMyThread());  
   
        Synchronized(delete   TMyThread);  
     
   
   
 


 

 
热门推荐笔记本: 七喜笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved