登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

如何判断一个线程是否正在执行  

2013-08-16 11:59:20|  分类: delphi xe4 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
2011-10-27 11:05 495人阅读 评论(0) 收藏 举报
 

创建线程时   
  ...   
  thread1   =   new   MyThread(false);   
  thread1   ->   FreeOnTerminate   =   false;     //   不自动释放线程   
  thread1   ->   Resume();       //   开始执行线程     
  ...   
    
  在Execute方法中循环检查Terminated是否为true,如果为true,则退出循环.   
    
    
  在主线程中结束线程时采用以下语句   
  ...   
  thread1->Terminated();     //   将thread1中的Terminated变量设为true   
  thread->WaitFor();           //   等待线程结束   
  delete   thread;                   //   释放线程对象占用的空间   
  ...   
 

方法一:   
        直接用操作系统的WaitForSingleObject   来判断线程是否激活,try   catch   所有错误   
    
  方法二:   
        判断   Thread->Handle   是否为空   
    
  方法三:   
        在线程做个Semaphore   然后在Terminate   的时候释放一次   主线程判断   
    
  我自己是这样做的,不知到是否有更好的方法,感觉方法一是最准确的,把延时设短一点   
    
  如果有更好的方法请高手门务必贴出来,这个也是我一直比较头疼的地方

//--------------------------------------------------------------------------------------------------------------------------------

方法一:   
        直接用操作系统的WaitForSingleObject   来判断线程是否激活,try   catch   所有错误   
    MSDN   里面就有说啊   
    
  int   sec=1;   
  DWORD   dw=WaitForSingleObject(Thread->Handle,sec);
  WaitForSingleObject   是如何使用的?

  评论这张
 
阅读(523)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018