在主线程中创建多个线程,如何在主线程中判断所有线程已经运行完毕? 在主线程中创建多个线程,如何在主线程中判断所有线程已经运行完毕? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 GetExitCodeThread也可以用WaitFor*系列函数。 其实可以这样!设计一个全局变量N,用于记录系统中生成的线程数!而后在每个线程的终止函数中用InterlockedDecrement(N)来对线程数减1,直至减为0即可证明全部线程已退出。由于终止函数与InterlockedDecrement都是线程安全的(严格地说,终止函数是将控制权移交给主线程处理的),故也不需要线程同步,比较简便! 我一般做法是弄一个TList之类的放在线程管理类中.当线程被创建首先去加锁,把自己加到List中,解锁.当线程结束的时候先加锁,把自己从List中删除,解锁.这样的好处是可以访问到任何子线程对象.如果不需要在外边访问子线程对象liangpei2008的办法不失一个好办法. 可以用的方法很多啊如果主线程就为了等待子线程可以用WAITFORMULTOBJECT;如果主线程是在结束的时候判断的话可以用循环判断你的线程是否已经结束了。 with mThread.Create() do OnTerminate:=mThreadDone; delphi 操作word 向文本文件追加数据碰到的问题 字符截取??? 换工作 关于按某一字段排序显示表中数据的问题? 所有的分了!谢谢 急问:关于delphi调用外部动态链接库的问题。 如何定义一个不继承于任何其他类的类? 寻好书 如何获取一个数在内存中的4个字节的十进制值? delphi 小数点运算怎么出现错误(我是新手) 如何让DLL中的窗口只保持在目标界面的上方而不是所有程序的上方
设计一个全局变量N,用于记录系统中生成的线程数!而后在每个线程的终止函数中用InterlockedDecrement(N)来对线程数减1,直至减为0即可证明全部线程已退出。由于终止函数与InterlockedDecrement都是线程安全的(严格地说,终止函数是将控制权移交给主线程处理的),故也不需要线程同步,比较简便!
当线程被创建首先去加锁,把自己加到List中,解锁.
当线程结束的时候先加锁,把自己从List中删除,解锁.这样的好处是可以访问到任何子线程对象.如果不需要在外边访问子线程对象liangpei2008的办法不失一个好办法.
如果主线程就为了等待子线程可以用WAITFORMULTOBJECT;
如果主线程是在结束的时候判断的话可以用循环判断你的线程是否已经结束了。
OnTerminate:=mThreadDone;