社区
ATL
帖子详情
如果调用unadvise断开事件连接失败,会有什么后果?
liumeiqinyang
2009-03-06 02:16:32
在断开事件连接后要释放资源,release掉CreateInstance产生的对象,但是如果万一unadvise失败,返回值不是S_OK,该如何处理?
让程序返回?还是继续执行释放资源等?
程序返回会有泄漏吧,事件断开失败后继续执行直到进程结束,会不会也有泄漏?
请问:该如何善后处理?
...全文
135
4
打赏
收藏
如果调用unadvise断开事件连接失败,会有什么后果?
在断开事件连接后要释放资源,release掉CreateInstance产生的对象,但是如果万一unadvise失败,返回值不是S_OK,该如何处理? 让程序返回?还是继续执行释放资源等? 程序返回会有泄漏吧,事件断开失败后继续执行直到进程结束,会不会也有泄漏? 请问:该如何善后处理?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jameshooo
2009-03-06
打赏
举报
回复
对,无需检查。
当advise的时候,组件会保存连接点的IDispatch指针,同时会增加连接点的引用计数;当Unadvise的时候组件会调用连接点的Release。只要把生命周期交给Release来管理就不会出错。
liumeiqinyang
2009-03-06
打赏
举报
回复
很久以前胡兄答过我问的关于outlook开发的问题,
我保存了CreateInstance(&pEvent)创建的实例创建的实例,然后在onclose时断开挂接的事件连接,
然后pEvent->Release();
这样,是否说,无需检查unadvise的返回值,调用unadvise后pEvent->Release()即可?
jameshooo
2009-03-06
打赏
举报
回复
正常情况下unadvise是不会失败的,除非组件或者连接点实现者已经被提前释放了,但如果都按照AddRef/Release机制来处理的话不会发生提前释放的问题。
如果连接点实现者的生命周期比组件长,那么即使不调用unadvise一般也不会有问题,通常情况下一个组件被释放时它会自动清理所有连接点(要看个人的实现习惯)。
如果连接点实现者的生命周期比组件短,那么客户端必须显式调用unadvise,然后才能释放连接点实现者实例,否则组件在激发事件时程序会发生异常,因为回调接口已经不存在了。
oyljerry
2009-03-06
打赏
举报
回复
查看unadvise返回值什么,根据返回结果再做处理...
C++
调用
ATL
事件
连接
点
在
调用
者工程中,需要增加“接收器”对象,添加一般的C++类对象,从IDispatch 派生,然后完成继承的虚函数,如创建 CSink类,继承自IDispatch ,完成Simple16库中触发
事件
的接收器。 // 头文件 #pragma once #...
COM
连接
点
事件
event
COM 中的典型方案是让客户端对象实例化服务器对象,然后
调用
这些对象。然而,没有一种特殊机制的话...有了
连接
点,服务器可通过定义一个接口来指定它能够引发的
事件
。服务器上引发
事件
时,要采取操作的客户端
会
向服务器
VC编写COM
连接
点
事件
COM 中的典型方案是让客户端对象实例化服务器对象,然后
调用
这些对象。然而,没有一种特殊机制的话,这些服务器对象将很难...有了
连接
点,服务器可通过定义一个接口来指定它能够引发的
事件
。服务器上引发
事件
时,要采
OLE技术专题——COM的
连接
点
事件
(上)(转)
一、前言 我的 COM 组件运行时产生一个窗口,当用户双击该窗口... ... 本回书开始话说 COM 的
事件
、通知、
连接
点......这些内容比较多,我分两次(共四回)来介绍。 <br />二、通知的方法 当
COM中的可
连接
对象与
连接
点机制及其MFC程序实现
本文首先论述可
连接
对象和
连接
点机制的原理,然后通过一个示例说明怎样用MFC编程实现可
连接
对象和内嵌于客户的
事件
接收器. 1、可
连接
对象和
连接
点机制的基本原理 为了在组件对象和客户之间提供更大的...
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章