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

标签 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 ,原因为 ERROR_INVALID_HANDLE。为什么会发生这种情况?

最佳答案

这可能是因为您传递的是 CEvent 对象而不是其句柄。

试试这个:

WaitForSingleObject(controllerThreadReady.m_hObject, INFINITE);

关于mfc - 由于句柄无效,WaitForSingleObject 返回等待失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4988874/

相关文章:

c++ - MFC 消息映射中的函数地址

visual-studio-2008 - 奇怪的 MFC/VC++ 链接器错误(std::list<CRect> 已定义)

c++ - 使用自定义字符串参数捕获抛出异常

wpf - 如何从 WPF 应用程序打开 MFC 对话框?

C++/MFC/ATL 线程安全字符串读/写

c++ - 如何使用 MFC 在 C++ 中旋转位图图像?

c++ - 相当于 Direct2D 中的 GDI 笔

c++ - 如何自定义我的按钮?

c++ - MFC类CEditView字体大小

c++ - MFC。在 RichEditCtrl 中快速高亮所有匹配项