OOP COM 服务器更新客户端
OOP COM Server Updates clients
我有一个进程外的ATL COM服务器(exe)。 当它由客户端启动时,服务器会生成一个工作线程来轮询某些数据。 每次更新数据时,我都想用更新的值通知所有客户端。
我创建了一个COM客户端,它通过CoCreateInstanceEx连接,创建其Sink对象,获取连接点并调用Advise,所有这些都没有错误。 但是,当服务器尝试Fire_event时,它是 IConnectionPointImpl::m_vec 为空,并且不会通知任何客户端。
我认为这是因为服务器创建了自己的对象,所以我最终得到了两个 IConnectionPointImpl::m_vec 实例,一个来自服务器,一个来自调用 Advice 时的客户端。 如何将服务器数据获取到客户端?
我推荐这种方法。创建一个普通的香草C++单例(不是 COM 对象) - 我们称之为 S
. S
将保存对所有未完成 COM 对象的弱、非AddRef
引用的列表(C++类指针,而不是 COM 接口指针会很方便)。COM 对象将在其构造函数中向S
注册自身,并在析构函数中取消注册。
当发生有趣的事情时,您的工作线程将通知(调用方法)S
,这将通知所有已注册的 COM 对象,这些对象将自行调用Fire_event
。
从工作线程触发事件时要小心。这是非法的,除非您的主线程和工作线程都进入 MTA。有关详细信息和一些解决方法,请参阅 http://vcfaq.mvps.org/com/1.htm。
相关文章:
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 使用调试/崩溃报告将应用程序部署到客户端
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 从服务器传输到客户端的消息不会出现
- OpenSSL TLS服务器-使用客户端证书白名单
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 提升 Asio TCP 服务器 处理多个客户端
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何绑定 C++ gRPC 客户端的网络接口
- C++套接字客户端到 Python 服务器未创建连接
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 将相机数据从服务器实时流式传输到客户端
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- 在 1 个服务器 n 客户端套接字 C++ MFC 应用程序中更新数据的客户端
- 如何在客户端连接时在QT中更新QGraphicsView
- C 客户端更新
- OOP COM 服务器更新客户端