目标:
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返回,
不知道原因,思考中