HWND mydlg=this->GetSafeHwnd();strc_thread.mydlg=this;AfxBeginThread(acceptThread,&strc_thread);AfxMessageBox("ok");执行这段代码的时候,为什么线程没有执行,却直接显示ok了?如果要在线程后面继续执行其他的函数,请问怎么修改?

解决方案 »

  1.   

    AfxBeginThread(acceptThread,&strc_thread);这行代码只是启动了一个线程,但并不等待线程结束。
    因此线程启动后直接执行下一行代码AfxMessageBox("ok");如果要等待线程执行结束,则应使用WaitForSingleObject函数等待线程执行结束后,在执行其他操作
      

  2.   

    请问是直接添加在AfxBeginThread(acceptThread,&strc_thread);的后面吗?
      

  3.   

    我是这样改的:
    HANDLE handle=CreateThread(0,0,acceptThread,&strc_thread,0,0);
    WaitForSingleObject(handle,10000);
    AfxMessageBox("ok");结果等了几秒的样子,就显示ok了,线程还没来得及执行,请问这个怎么解决?是不是应该把时间设置更长?
      

  4.   

    加断点在acceptThread里,应该可以看到进去了。第二个问题不明白,是在子线程还是在父线程里执行了?