COM组件的生命期控制

一、 提供生命期控制函数的必要性。 到目前为止客户对COM组件知道的仅仅是接口,因此客户也就不能直接控制组件的生命周期。为了客户能够更好的控制组件的生命周期,COM组件提供了一种直接控制单个接口生命周期来间接控制组件生命周期的方法。 二、 生命期控制。 1、 客户不直接控制组件生命期的原因。 在客户的代码中,可能会有若干个指向此组件接口的指针。 例如:客户的一部分通过一个指针使用组件的IX接口,另一部分通过另一个指针使用组件的IY接口,当不在使用IX接口时,可能还在使用IY接口。在这种情况下,当使用完一个接口时另一个接口可能还在被使用,因此组件是不能被释放的。这就很难决定何时释放掉组件。 COM组件采用的方法是,由COM组件提供对每个接口的引用计数控制,即IUnknown接口的AddRef和Release函数。客户通过调用AddRef告诉组件开始使用这个接口,调用Release告诉组件使用完此接口。然后由组件自己决定是否释放组件。 2、 COM组件使用接口级引用计数与使用组件级引用计数。 在用户来看,引用计数处于接口级而不是组件级的原因如下: <1>、方便调试 用户对接口操作时,很容易忘记调用Release函数,这就导致组件不能被释放掉。若采用组件级的应用计数,查找的范围是组件的所有接口;若采用接口级别引用计数查找的范围只需要限制在某个接口。从查找范围上来看采用接口级引用技术能够缩小需要调试的范围。 <2>、资源按需获取 在实现一个接口时可能需要大量的内存和资源。若采用组件级的引用计数,只有当组件的所有接口都不再使用时,才能释放资源(包括早已不再使用的资源);若采用接口级的引用技术当接口不再使用时,此与次接口关联的资源就可以被释放。能够对不需要资源的及时释放,节省资源。 三、 引用计数规则。 1、 输出参数规则(即返回前调用AddRef规则)。 任何在输出参数中或者作为返
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值