现在有这样一个问题有个form,在form里创建了N个线程然后N个线程全部运行如何能让N个线程全部执行完后自动在主线程里执行一个事件比如线程执行完了就在主窗体的一个label里显示,全部执行完毕!我不想阻塞主线程,而且要刚好最后一个子线程执行完毕后就执行主线程的事能不能举个例子!!!!!谢谢!!!!!!!!

解决方案 »

  1.   

    加一个 while 循环去判断 线程有没有结束
      

  2.   

    创建一个全局计数器,线程创建时,+1
    线程结束时-1,同时判断是否是最后一个线程,是则label里显示
      

  3.   

    如果你的子线程在64个或以内,可以再多创建一个线程,而该线程所在做的事就是WaitForMultiOjects,所有线程线束,然后再Synchronize一个方法去显示,然后该线程自己退出。
      

  4.   

    WINBASEAPI
    DWORD
    WINAPI
    WaitForMultipleObjects(
        __in DWORD nCount,
        __in_ecount(nCount) CONST HANDLE *lpHandles,
        __in BOOL bWaitAll,
        __in DWORD dwMilliseconds
        );
      

  5.   

    TThread类的有个OnTerminate事件。在那里做就好了。没什么例好举了。太简单了。
      

  6.   

    TThread类的有个OnTerminate事件。在那里做就好了。没什么例好举了。太简单了。
    ============
    这个不也需要全局计数?
      

  7.   

    另外,当线程属于意外中止的话,OnTerminate会置后执行。
      

  8.   

    非常好,就是WaitForMultipleObjects主线程开个控制线程,控制线程里开子线程,开完后执行WaitForMultipleObjects就可以了哈哈 ~~~谢谢~~~~