N norlon Unregistered / Unconfirmed GUEST, unregistred user! 2005-09-27 #1 想保证一个线程只执行一次,即如果已经有个该线程的实例正在运行,则不再创建线程了,请问如何实现,谢谢!
N norlon Unregistered / Unconfirmed GUEST, unregistred user! 2005-09-27 #2 想保证一个线程只执行一次,即如果已经有个该线程的实例正在运行,则不再创建线程了,请问如何实现,谢谢!
L lsfbad Unregistered / Unconfirmed GUEST, unregistred user! 2005-09-27 #3 用contnrs单元里的Tobjectlist来管理线程啊, 某类线程要create(false)前,先判断Tobjectlist中是否含有此类线程, 如: for i:=0 to myobjectlist.count -1do if myobjectlist.items=TMyThread then exit; 就不再创建线程, 线程创建时,myobjectlist.add(...);结束时,myobjectlist.delete(..);
用contnrs单元里的Tobjectlist来管理线程啊, 某类线程要create(false)前,先判断Tobjectlist中是否含有此类线程, 如: for i:=0 to myobjectlist.count -1do if myobjectlist.items=TMyThread then exit; 就不再创建线程, 线程创建时,myobjectlist.add(...);结束时,myobjectlist.delete(..);
Z zdr690929 Unregistered / Unconfirmed GUEST, unregistred user! 2005-09-28 #4 你可以在创建线程 时,inherited Create(true); //创建一个挂起的线程,当为TRUE时,Execute里的语句执行完后,自动释放 这样就能保证一个线程只执行一次后就自动销毁了 我测试运行正常,可以连续多次创建线程,不会发生错误 如果用inherited Create(FALSE);来创建线程,在线程执行完后,线程 并不销毁,下次创建时,将出现错误.
你可以在创建线程 时,inherited Create(true); //创建一个挂起的线程,当为TRUE时,Execute里的语句执行完后,自动释放 这样就能保证一个线程只执行一次后就自动销毁了 我测试运行正常,可以连续多次创建线程,不会发生错误 如果用inherited Create(FALSE);来创建线程,在线程执行完后,线程 并不销毁,下次创建时,将出现错误.
Z zdr690929 Unregistered / Unconfirmed GUEST, unregistred user! 2005-09-28 #5 补充:创建后,要执行线程,要回一句: Resume; //开始执行 线程才开始执行
C cqwty Unregistered / Unconfirmed GUEST, unregistred user! 2005-09-29 #6 你可以检查线程是不是挂起的,还有检查线程的terminated,如果这两个都为false,那肯定线程在运行了