【问题标题】:Cross-process singleton object跨进程单例对象
【发布时间】:2011-05-05 07:38:14
【问题描述】:

这是我的another Q 的变体。我有两个应用程序,X 和 Y。它们必须在它们之间共享一个 COM 对象。 X 将向该对象发送数据,Y 将响应从该应用程序发送的事件。在任何时候,X 或 Y 都可能被终止,但单例需要保持活动状态,直到两个应用程序都被终止。
应该可以通过这种方式创建单例 COM 对象,但是如果 X 首先启动并创建它,Y 然后启动并使用它,然后 X 停止并...单例会发生什么?
无论如何,有谁曾经用 Delphi 试过这个吗?

【问题讨论】:

    标签: delphi com delphi-2007 interprocess


    【解决方案1】:

    我认为您缺少 COM 的核心点。 COM 只是一般 IPC 的一个步骤,我的意思是,COM 进程只存在于一个进程中(甚至是线程,但这就是公寓故事的来源)。如果您从两个进程访问一个 COM 对象,则一个进程实际上将来自该对象的调用编组为“平面数据”,并将消息发送到另一个进程的隐藏窗口句柄。

    为了能够做你描述的事情,你必须担心当“拥有进程”想要关闭时如何处理对象,并且必须“暂停”对象(例如通过序列化)并询问其中一个其他进程“恢复”对象并承担所有权并开始运行该对象。

    我建议你创建第三个进程,专门运行你想在其他进程中使用的这个单例对象。通过这种方式,您可以让正常引用计数和 COM 激活完成它的工作,并且您可以按照它应该工作的方式使用 COM。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多