为什么IClassFactory :: LockServer在我看来IClassFactory :: AddRef/IClassFactory :: Release可以实现相同的目标?
这在Don Box的书籍Essential COM中有详细解释.
AddRef/Release在类对象的IClassFactory接口上通常是进程外COM服务器中的空方法.这是因为服务器在调用时会维护对类对象的内部引用CoRegisterClassObject,因此"正常"进程内服务器实现AddRef/Release会导致类对象上的引用计数总是超过1,服务器也不会知道什么时候打电话CoRevokeClassObject.
COM运行时调用后IClassFactory::LockServer,它调用对类对象的外部引用CoGetClassObject.以这种方式,可以基于外部引用的存在或否则来适当地控制服务器进程寿命.
| 归档时间: |
|
| 查看次数: |
1336 次 |
| 最近记录: |