Я пытаюсь использовать CEvent
, чтобы заставить мой поток ждать, пока очередь сообщений не будет готова в соответствии с рекомендацией MSDN , чтобы моя 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
с причиной ERROR_INVALID_HANDLE
.Почему это происходит?