Window 通知的信号事件
Signal event on Window's notification
我正在实施 Reactor
设计模式,使用单线程,使用 Windows 事件机制进行异步操作。
我在尝试结合我的反应器以支持 Windows Notifications
(WM_CLOSE、WM_CREATE、WM_DEVICECHANGE...)以及现有的 Windows Events
.
因此,我的问题是:
是否可以在特定 window 收到特定通知时发出事件信号?
提前致谢。
不,当接收到特定的 window 消息时,您不能使 Windows 向事件对象发出信号。您必须先在消息循环中捕获消息,然后根据需要自己向事件对象发出信号。
否则,重新编写消息循环以使用 MsgWaitForMultipleObjects()
以便它可以同时检查事件信号和待处理的 window 消息,然后您可以根据满足的条件进行操作等待每个循环迭代。请注意这个问题:
MsgWaitForMultipleObjects is a very tricky API
if you specify bWaitAll as true, you may find that your application doesn’t wake up when you expected it to
在这种情况下,您可以将 bWaitAll
设置为 false,一切正常。
我正在实施 Reactor
设计模式,使用单线程,使用 Windows 事件机制进行异步操作。
我在尝试结合我的反应器以支持 Windows Notifications
(WM_CLOSE、WM_CREATE、WM_DEVICECHANGE...)以及现有的 Windows Events
.
因此,我的问题是: 是否可以在特定 window 收到特定通知时发出事件信号?
提前致谢。
不,当接收到特定的 window 消息时,您不能使 Windows 向事件对象发出信号。您必须先在消息循环中捕获消息,然后根据需要自己向事件对象发出信号。
否则,重新编写消息循环以使用 MsgWaitForMultipleObjects()
以便它可以同时检查事件信号和待处理的 window 消息,然后您可以根据满足的条件进行操作等待每个循环迭代。请注意这个问题:
MsgWaitForMultipleObjects is a very tricky API
if you specify bWaitAll as true, you may find that your application doesn’t wake up when you expected it to
在这种情况下,您可以将 bWaitAll
设置为 false,一切正常。