小弟遇到一个很怪的问题已经写好了两个程序
ComSvc.exe
Client.exe
其中ComSvc.exe是一个用ATL编写的进程外的Com Server,已经完全注册成功。
Client是调用ComSvc的客户端。
ComSvc.exe实现了ICalc接口Client用CoCreateInstance得到ICalc的接口指针。如果我运行Client,可以取得ICalc的指针,使用ICalc的函数可以得到正确的结果我的遇到的问题是
我运行Client,取得ICalc的指针,不释放ICalc接口,此时ComSvc当然还处于运行状态然后再运行一个Client,在取得ICalc接口指针的时候,又一个ComSvc运行起来了!!!!!!为什么会再运行一个ComSvc的实例,为什么系统不使用正在运行的的ComSvc的实例呢????
如果我需要我的ComSvc不管有多少个Client,都只存在一个实例,我该怎么办??
希望各位大虾教我!!!!!!!!!
ComSvc.exe
Client.exe
其中ComSvc.exe是一个用ATL编写的进程外的Com Server,已经完全注册成功。
Client是调用ComSvc的客户端。
ComSvc.exe实现了ICalc接口Client用CoCreateInstance得到ICalc的接口指针。如果我运行Client,可以取得ICalc的指针,使用ICalc的函数可以得到正确的结果我的遇到的问题是
我运行Client,取得ICalc的指针,不释放ICalc接口,此时ComSvc当然还处于运行状态然后再运行一个Client,在取得ICalc接口指针的时候,又一个ComSvc运行起来了!!!!!!为什么会再运行一个ComSvc的实例,为什么系统不使用正在运行的的ComSvc的实例呢????
如果我需要我的ComSvc不管有多少个Client,都只存在一个实例,我该怎么办??
希望各位大虾教我!!!!!!!!!
我的COM Component是在一个Exe中啊COM SCM得到我查询接口的请求后,
根本不理当前系统中已经运行的COM Server
他回去启动一个新的COM Server
然后在这个COM Server上查询接口在这种情况下
我怎么实现Single Object或者Singleton factory???????????????????
如果我需要我的ComSvc不管有多少个Client,都只存在一个实例,我该怎么办??”
==========================================================================
我写的exe server从来没有出现过你这种情况,不管有多少个client激活server的接口只有一个server存在,这个问题应该和Single object没有关系,怀疑你的程序在引用计数上出了问题。把你的程序发给我,我帮你看看:[email protected]
如何在客户端调用这个Service的接口啊,我试了N次都不行。说拒绝防问!
[email protected]
http://www.vckbase.com/document/viewdoc/?id=1183#总是调用%20CoInitialize(Ex)
CoRegisterClassObject(m_clsid, &m_xClassFactory,
CLSCTX_LOCAL_SERVER,
m_bMultiInstance ? REGCLS_SINGLEUSE : REGCLS_MULTIPLEUSE,
&m_dwRegister);
当然罗,这时MFC注册EXE COM Server的一段代码,用到的API你自已查去吧。关键是第四个参数。
DECLARE_CLASSFACTORY_SINGLETON(YourClassName)