本文共 819 字,大约阅读时间需要 2 分钟。
总结:
如果在工作线程中有可能涉及到了消息驱动的API,那么不能在主线程中使用WaitForSingleObject一类函数,而建议使用MsgWaitForMultipleObjects
while(TRUE){ DWORD result ; MSG msg ; result = MsgWaitForMultipleObjects(1, &readThreadHandle, FALSE, INFINITE, QS_ALLINPUT); if (result == (WAIT_OBJECT_0)) { break; } else { PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); DispatchMessage(&msg); } }
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
设置多线程标记退出后(_runFlag = false),调用以下函数, 既既可以等待消息,也可以等待线程
void WaitForSingleObjectAndMsg( HANDLE hHandle){ while(TRUE) { DWORD result ; MSG msg ; result = MsgWaitForMultipleObjects(1, &hHandle, FALSE, INFINITE, QS_ALLINPUT); if (result == (WAIT_OBJECT_0)) { break; } else { PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); DispatchMessage(&msg); } }}
转载地址:http://tmnws.baihongyu.com/