请问如何检查某个线程已经开始运行了 ( 积分: 50 )

  • 主题发起人 主题发起人 norlon
  • 开始时间 开始时间
N

norlon

Unregistered / Unconfirmed
GUEST, unregistred user!
想保证一个线程只执行一次,即如果已经有个该线程的实例正在运行,则不再创建线程了,请问如何实现,谢谢!
 
想保证一个线程只执行一次,即如果已经有个该线程的实例正在运行,则不再创建线程了,请问如何实现,谢谢!
 
用contnrs单元里的Tobjectlist来管理线程啊,
某类线程要create(false)前,先判断Tobjectlist中是否含有此类线程,
如:
for i:=0 to myobjectlist.count -1do

if myobjectlist.items=TMyThread then
exit;
就不再创建线程,
线程创建时,myobjectlist.add(...);结束时,myobjectlist.delete(..);
 
你可以在创建线程 时,inherited Create(true);
//创建一个挂起的线程,当为TRUE时,Execute里的语句执行完后,自动释放
这样就能保证一个线程只执行一次后就自动销毁了
我测试运行正常,可以连续多次创建线程,不会发生错误
如果用inherited Create(FALSE);来创建线程,在线程执行完后,线程 并不销毁,下次创建时,将出现错误.
 
补充:创建后,要执行线程,要回一句:
Resume;
//开始执行
线程才开始执行
 
你可以检查线程是不是挂起的,还有检查线程的terminated,如果这两个都为false,那肯定线程在运行了
 
后退
顶部