2010-11-04 62 views
4

这是我的another Q的变体。我有两个应用程序,X和Y.他们必须在它们之间共享一个COM对象。 X将会发送数据给这个对象,Y会响应这个应用程序发送的事件。在任何时候,X或Y都可能被终止,但单身人士需要保持活跃状态​​,直到两个应用程序终止。
这种方式应该可以创建一个单例COM对象,但是如果X先启动并创建它,然后Y启动并使用它,那么X会停止,并且......单例会发生什么?
不管怎么说,有没有人曾经与德尔福一起尝试过?跨进程单件对象

回答

6

我想你错过了COM的核心点。 COM只是普通IPC的一个步骤,我的意思是,COM过程只存在于一个过程中(或者甚至是线程,但这就是公寓故事发生的地方)。如果您从两个进程访问一个COM对象,则一个进程实际上是将来自和进入对象的调用编组为“扁平数据”,并将消息发布到另一个进程的隐藏窗口句柄。

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

我建议你创建第三个进程,具体到只有运行这个你想在其他进程中使用的单例对象。这样你可以让正常引用计数和COM激活完成它的工作,并且你将使用COM只是它应该工作的方式。

+0

很好的建议! :-) – 2010-11-04 22:17:53

+0

谢谢,还有更多来自:http://yoy.be/item.asp?i282 – 2010-11-04 23:38:28