WaitForMultipleObjects函数使用注意事项

还是写那个串口调试助手出现的问题。

这个函数原型如下:

DWORD WaitForMultipleObjects(
  DWORD nCount,             // number of handles in array
  CONST HANDLE*lpHandles,  // object-handle array
  BOOL fWaitAll,            // wait option
  DWORD dwMilliseconds      // time-out interval
);

第一个参数就是句柄数组的成员数。

第二个参数是句柄数组的地址

第三个是一个等待选项,就是在这出的问题。

第四个是超时设定

因为我使用MFC建立的工程,所以我使用的是CEvent,而不是创建事件句柄。

但是waitformultipleobjects函数需要的是一个句柄数组,所以需要将类中的句柄专门提取出来。

这个成员是m_hObject,本身的值就是一个句柄。

这样只要整合一下,就能统一赋值到一个数组中了。

但是我在fWaitAlll参数中犯了一个有点智障的错误,因为msdn没好好看。

这个参数如果设置为真,那么只有当所有的事件都被触发后才会进入下一步……

我一共设置了三个事件,但是我的要求是一旦事件响应之后,返回位于句柄数组中的地址,然后用switch去查询事件。

在我改成false后,果断好使了……

 

 
posted @ 2013-05-26 09:36  Matrix_R  阅读(1911)  评论(0编辑  收藏  举报