Delphi 跨进程单例对象

Delphi 跨进程单例对象,delphi,com,delphi-2007,interprocess,Delphi,Com,Delphi 2007,Interprocess,这是我的一个变体。我有两个应用程序,X和Y。它们之间必须共享一个COM对象。X将向该对象发送数据,Y将对此应用程序发送的事件作出响应。在任何时候,X或Y都可能被终止,但在两个应用程序都终止之前,单例需要保持活动状态。 这样创建一个单例COM对象应该是可能的,但是如果X先启动并创建它,Y然后启动并使用它,然后X停止并。。。singleton怎么了?不管怎样,有人用Delphi尝试过吗?我认为您缺少COM的一个核心点。COM只是普通IPC的一个步骤,我的意思是,COM进程只存在于一个进程中(甚至是线

这是我的一个变体。我有两个应用程序,X和Y。它们之间必须共享一个COM对象。X将向该对象发送数据,Y将对此应用程序发送的事件作出响应。在任何时候,X或Y都可能被终止,但在两个应用程序都终止之前,单例需要保持活动状态。

这样创建一个单例COM对象应该是可能的,但是如果X先启动并创建它,Y然后启动并使用它,然后X停止并。。。singleton怎么了?
不管怎样,有人用Delphi尝试过吗?

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

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

我建议您创建第三个进程,特别是只运行您希望在其他进程中使用的这个单例对象。通过这种方式,您可以让正常的引用计数和COM激活完成它的工作,并且您可以按照预期的方式使用COM