我的问题是这样:
界面线程调用dll功能启动一个线程,此线程会再启动其它线程;
界面线程调用dll功能的停止功能,dll等待所有线程退出,然后返回;结果发现停止返回后,线程才开始执行。原因应该是:
启动的线程还没来得及执行,界面便执行了停止功能;
而我在等待线程退出时,采用WaitForSingleObject,
通过Trace看来,WaitForSingleObject在"线程没执行"、和"线程已结束"时结果一样;不知大家如何处理这种情况?
难道要在WaitForSingleObject后,再加个Terminate?

解决方案 »

  1.   

    线程没执行和线程没有初始化是不同的。只要线程被创建成功,应该就可以被Wait.
      

  2.   

    只要创建线程返回了有效的句柄,就可以用WaitForSingleObject等待,你是怎么等待线程创建的线程的?
      

  3.   

    创建线程后会返回一个句柄,
    while(1)
    {
        if(WaitForSingleObject.....)
          .....
    }
      

  4.   

    只能等待有效的句柄//楼上面已经说的很明白了,修改一下楼上的代码,handle初始化为0while(!handle)
    {
       Sleep(100);
    }
    WaitForSingleObject(handle...);
      

  5.   

    CreateThread只要返回了有效句柄,应该就可以WaitForSingleObject。是不是WaitForSingleObject设置的超时时间太短了?