关于WaitForMultipleObjects用法的困惑,谢谢
大家好,我用一个线程来执行controlDlg->operatorDlg->m_sendCommand.GetDStatus();这段代码,
然后我增加了WaitForMultipleObjects来判断关闭事件,但是这样带来一个问题,就是WaitForMultipleObjects会一直等待,不会执行后面的代码了,请问有什么办法可以解决这个问题啊,谢谢
//工作线程
UINT SeatMapManagerDlg::ThreadRoll(LPVOID pParam)
{
int i = 0;
DWORD Event = 0;
SeatMapManagerDlg *controlDlg = (SeatMapManagerDlg*)pParam;
int count = 0;
for (;;)
{
TRACE("ThreadRoll is runing\n");
if (controlDlg->operatorDlg == NULL)
{
continue;
}
// TODO:
Event = WaitForMultipleObjects(1, controlDlg->m_hEventArray, FALSE, INFINITE);
switch (Event)
{
case 0:
{
controlDlg->m_bThreadAlive = FALSE;
AfxEndThread(100);
break;
}
default:
}
controlDlg->operatorDlg->m_sendCommand.GetDStatus();
Sleep(1000);
}
return 0;
}
[解决办法]
设个超时,不要INFINITE,然后根据返回值判断是否event发生或超时