gpt4 book ai didi

delphi - 跨进程单例对象

转载 作者:行者123 更新时间:2023-12-03 15:26:08 24 4
gpt4 key购买 nike

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

最佳答案

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

为了能够执行您所描述的操作,您必须担心当“拥有进程”想要关闭时如何处理对象,并且必须“挂起”对象(例如通过序列化)并询问其中之一其他进程“恢复”该对象并取得所有权并开始运行该对象。

我建议您创建第三个进程,专门用于运行您想要在其他进程中使用的单例对象。这样,您就可以让正常引用计数和 COM 激活完成其工作,并且您将按照 COM 的预期工作方式使用 COM。

关于delphi - 跨进程单例对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4101311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com