您的位置:首页 > 其它

信号量 MFC线程同步控制问题

2008-11-13 18:46 169 查看
目标:

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返回,

不知道原因,思考中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: