首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨进程单例对象

跨进程单例对象
EN

Stack Overflow用户
提问于 2010-11-05 04:57:39
回答 1查看 398关注 0票数 4

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

应该可以这样创建一个单独的COM对象,但是如果X首先启动并创建它,Y然后启动并使用它,然后X停止并...单例发生了什么?

不管怎样,有没有人在Delphi上尝试过这个?

EN

Stack Overflow用户

回答已采纳

发布于 2010-11-05 05:24:38

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

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

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

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4101311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档