社区
ATL
帖子详情
如果调用unadvise断开事件连接失败,会有什么后果?
liumeiqinyang
2009-03-06 02:16:32
在断开事件连接后要释放资源,release掉CreateInstance产生的对象,但是如果万一unadvise失败,返回值不是S_OK,该如何处理?
让程序返回?还是继续执行释放资源等?
程序返回会有泄漏吧,事件断开失败后继续执行直到进程结束,会不会也有泄漏?
请问:该如何善后处理?
...全文
158
4
打赏
收藏
如果调用unadvise断开事件连接失败,会有什么后果?
在断开事件连接后要释放资源,release掉CreateInstance产生的对象,但是如果万一unadvise失败,返回值不是S_OK,该如何处理? 让程序返回?还是继续执行释放资源等? 程序返回会有泄漏吧,事件断开失败后继续执行直到进程结束,会不会也有泄漏? 请问:该如何善后处理?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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返回值什么,根据返回结果再做处理...
COM
连接
点简单例子
- **
断开
连接
**:当不再需要
事件
通知时,客户程序
调用
`IConnectionPoint::
Unad
vis
e`
断开
连接
。 **应用场景**: COM
连接
点广泛应用于Windows系统组件、控件、自动化和多层应用程序的通信中。例如,Office插件可能...
ATL com
连接
点简单demo
4. **Ad
vis
e** 和 **
Unad
vis
e** 方法:客户端通过
调用
这些方法来建立和解除与
连接
点的
连接
。 至于压缩包中的"ATLLinkPointPro"文件,这可能是项目的主要源代码文件,包含了ATL COM
连接
点的具体实现。它可能包括...
ATL_COM组件开发,多线程中应用
连接
点传递消息实例
当一个客户端(通常是观察者)想要监听某组件的
事件
时,它
会
通过`Ad
vis
e`方法与
连接
点建立
连接
,然后通过`
Unad
vis
e`方法
断开
连接
。 在多线程环境中,为了确保消息的正确传递,我们需要考虑线程安全问题。这通常涉及...
A tutorial on connections points and Aynchronous calls(53KB)
7. 当不再需要
事件
通知时,容器
调用
`IConnectionPoint::
Unad
vis
e`
断开
连接
。 接下来,我们讨论异步
调用
。在同步
调用
中,
调用
者必须等待被
调用
者执行完毕才能继续执行后续代码,这可能导致阻塞,特别是在UI线程上,...
ATL
3,248
社区成员
48,531
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章