由于句柄无效,WaitForSingleObject返回等待失败

时间:2011-02-14 04:39:08

标签: mfc

我正在尝试使用CEvent让我的线程等到消息队列按照MSDN's advice准备就绪,以便我的PostThreadMessage函数能够正常工作。

BOOL MFC_Thread::InitInstance(){
BOOL worked=CWinThread::InitInstance();
MSG msg;
BOOL result=PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
    fingerveinControllerThreadReady->SetEvent();//Breakpoint 1
    return TRUE;
}

void init(){
    controllerThreadReady=new CEvent(FALSE, FALSE);
CWinThread* thread=AfxBeginThread(RUNTIME_CLASS(MFC_Thread));
controllerThread=thread->m_nThreadID;
WaitForSingleObject(controllerThreadReady, INFINITE);
    DoSomething();//Breakpoint 2
}

不幸的是,似乎WaitForSingleObject没有做好自己的工作。有时首先击中断点1,有时击中断点2.当首先击中断点2时,我会收到原因为WAIT_FAILED的{​​{1}}。为什么会这样?

1 个答案:

答案 0 :(得分:3)

这可能是因为你传递了CEvent对象而不是它的句柄。

试试这个:

WaitForSingleObject(controllerThreadReady.m_hObject, INFINITE);