Window的通知信号事件

时间:2015-03-08 18:35:36

标签: windows winapi asynchronous windows-messages

我正在使用单个线程实现Reactor设计模式,以便使用Windows事件机制进行异步操作。

我在尝试将我的reactor与支持Windows Notifications(WM_CLOSE,WM_CREATE,WM_DEVICECHANGE ...)以及现有Windows Events组合时遇到了问题。

因此,我的问题是: 当特定窗口收到特定通知时,是否可以发出事件信号?

提前致谢。

1 个答案:

答案 0 :(得分:1)

不,当收到特定的窗口消息时,您无法使Windows信号成为事件对象。您必须首先捕获消息循环中的消息,然后根据需要自己发出事件对象的信号。

否则,重新编写消息循环以使用MsgWaitForMultipleObjects(),这样它可以同时检查事件信号和挂起的窗口消息,然后您可以根据每个循环迭代中满足等待的任何一个进行操作。请注意这个问题:

MsgWaitForMultipleObjects is a very tricky API

  

如果您将bWaitAll指定为true,则可能会发现您的应用程序在您预期的时候没有唤醒

在这种情况下,您可以将bWaitAll设置为false,一切正常。