COM事件通知
无:
注意:
题:
下图:
hresult = pis8->QueryInterface(
__uuidof(IConnectionPointContainer),
(void **) &pContainer);
//result handling omitted
hresult = pContainer->FindConnectionPoint(
__uuidof(IS8SimulationEvents),
&pConnection);
//result handling omitted
客户端实现事件接口( IS8SimulationEvents
)这可以位于单独的组件中,也可以位于客户端组件本身上。 当组件触发事件时调用该实现。
在FindConnectionPoint
之后,客户端调用pConnection->Advise
,传递IS8SimulationEvents
并接收一个“cookie”。 Cookie需要调用Unadvise
,在清理期间必须调用Unadvise
以断开连接。
如果客户端运行在与服务器不同的线程中,则客户端需要运行消息循环来接收呼叫。
如果我正确地理解这个问题,似乎客户端需要运行waitloop,类似
while(!threadCancel)
{
DWORD waitResult = WaitForMultipleObjects(actionCount, waitHandles, FALSE, 500);
switch (waitResult)
{
case SERVER_COMMAND_1:
HandleServerCommand1();
break;
...etc...
default:
throw ...
}
}
客户端的事件接收器会触发等待句柄,从而有效地让服务器告诉客户端要做什么。
链接地址: http://www.djcxy.com/p/81299.html下一篇: Controlling voltage supply on usb port using c or any programming language