代码之家  ›  专栏  ›  技术社区  ›  Wim ten Brink

跨进程单例对象

  •  4
  • Wim ten Brink  · 技术社区  · 14 年前

    这是 another Q 我的。我有两个应用程序,X和Y。它们必须共享一个COM对象。X将向此对象发送数据,Y将对此应用程序发送的事件做出响应。在任何时候,X或Y都可能被终止,但是singleton需要保持活动状态,直到两个应用程序都被终止。
    应该可以用这种方法创建一个singleton COM对象,但是如果X先开始并创建它,Y然后开始并使用它,然后X停止并。。。单身汉怎么了?
    不管怎样,有人试过德尔菲吗?

    1 回复  |  直到 8 年前
        1
  •  6
  •   Stijn Sanders    14 年前

    我认为你遗漏了COM的一个核心点。COM只是通用IPC的一个步骤,我的意思是,一个COM进程只存在于一个进程中(甚至线程中,但这就是单元故事的来源)。如果从两个进程中访问一个COM对象,则一个进程实际上是将从对象和到对象的调用封送到“平面数据”,并将消息发送到另一个进程的隐藏窗口句柄。

    要做到您所描述的,您必须担心当“拥有的进程”要关闭时如何处理对象,并且必须“挂起”对象(例如,通过序列化),并要求其他进程之一“恢复”对象并承担所有权并开始运行对象。

    我建议您创建第三个过程,特别是 只有 运行这个要在其他进程中使用的单例对象。这样你就可以 引用计数和COM激活完成了它的工作,而您将使用COM的方式正是它应该工作的方式。

    推荐文章