描述:
我们写了一个COM server叫 MYCOMSERVER,想用它做服务器进程在后台运行来做实现一些实时数据处理功能,然后分别有2个.NET的客户端程序去控制它或与它通信。
我们的问题是:
我们知道如果在.NET里去启动一个新的MYCOMSERVER,但不知道如何去引用一个已经启动了的MYCOMSERVER?因为我们有两个.NET的客户端程序都要与1个MYCOMSERVER进程打交道。
我们是这样去启动一个新的MYCOMSERVER的:
MYCOMSERVER.DocumentClass yimaEncSvr = new MYCOMSERVER.DocumentClass(); //MYCOMSERVER这个名称是我们在.NET里添加引用后生成的类名
我猜有没有类似GetCurrentRunningObject() (我瞎猜的)这样的一个方法可以直接获取系统正在运行的进程实例,
MYCOMSERVER.DocumentClass yimaEncSvr = MYCOMSERVER.GetCurrentRunningObject()
在线等待,请各位大侠相助啊,不胜感激哦 :)
解决方案1:
楼上正解
解决方案2: 这个取决于服务器的实现,服务器组件必须实现两件事情:
1、注意RegisterClassObject的标志参数选择。
2、服务器组件必须实现单实例模式。
Com server启东了就一直在运行,你需要使用的时候,CoCreateInstance创建它的一个对象实例,然后就可以调用它的借口函数等来实现访问com server,你就不需要考虑com server是否启动的问题了.