目標:
WORK線程中運行到某處時觸發該 MsgWaitForMultipleObjects等待的hEventSerThrdWait
關鍵代碼:
主線程窗體中
gPrintJobs[0] = m_hEventTestReceiver;
gPrintJobs[1] = hEventSerThrdWait;
dwWake = MsgWaitForMultipleObjects(
gNumPrinting,
gPrintJobs,
FALSE,
INFINITE,
QS_ALLEVENTS);
if (dwWake >= WAIT_OBJECT_0 && dwWake < WAIT_OBJECT_0 + gNumPrinting)
{
}
}
else //如果是其他的消息,則保持消息循環
{
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TRACE("/r/n");
TRACE("PeekMessage");
TRACE("/r/n");
if(msg.message == WM_QUIT)
{
quit =TRUE;
exitCode = msg.wParam;
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
原做法是在從線程中聲明一全局變量,HANDLE hEventSerThrdWait;
然後主線程中extern HANDLE hEventSerThrdWait
從線程運行到該處時SetEvent(hEventSerThrdWait);
但是該做法行不通
改爲
從線程運行到該處時SendMessage,由從線程窗體事件響應函數中SetEvent(hEventSerThrdWait);即可激發MsgWaitForMultipleObjects返回,
不知道原因,思考中