2011-02-10 38 views
2

我有一个COM类。它可以被我自己以外的进程访问。每个进程创建它自己的类实例。有没有办法让COM对象在CreateInstance()的所有进程中共享?ATL COM类的单个实例

COM Singleton是唯一想到的东西。不过,我没有任何使用这方面的经验。

回答

2

我继承的代码库通过在COM项目中声明一个静态的'实现'实例来完成这个任务。

COM类只提供该实例的接口。这样,COM类的多个实例就可以有效地访问COM服务器中的单例实现对象。

请注意,这通常需要同步结构。

+0

CreateInstance(...,CLSCTX_SERVER,...)完成同样的事情吗?基本上实例在服务器端,客户端只连接到它? – MarkP 2011-02-10 17:02:16

+0

如果它在DLL中,它不会失败。 CLSCTX_SERVER意味着存在一个独立的EXE服务器,并且可以作为一个进程运行。 COM +是你的朋友。 – 2011-02-10 17:04:07

0

进程外服务器中的COM单例。如果服务器已经在DLL中实现,请考虑使用COM +将其配置为进程外。这样,你会得到两全其美。