Interop Object在.Net中的引用计数问题
来源:互联网 发布:apache ant 1.8.4 编辑:程序博客网 时间:2024/06/06 13:22
如何正确的释放Interop reference是一个有趣的问题,有时候会让程序运行的莫名其妙。基本上,我们在.Net中访问的每一个COM对象都有一个称为RCW (Runtime Callable Wrapper))的包装。一个RCW对应一个COM实例,其是分配在managed heap上的一种轻量级对象,然而它所包装的对象确是分配在native heap上的。RCW对象同样有一个名为refCount的属性来控制生命周期,一旦数值变为0,RCW对象将不再可以访问,并且其包装的COM对象也会被释放。这种情况下的非法访问会扔出异常,“COM object that has been separated from its underlying RCW cannot be used.”
使用System.Runtime.InteropServices.Marshal.ReleaseComObject(object)可以手动的将RCW的计数引用减1,当有新的client引用RCW对象时,引用计数会自动加1。.Net的垃圾回收也会自动的将不用的RCW计数减1,但往往不受控制,难以跟踪。
CodeProject上有一个文章描写了具体的例子
http://www.codeproject.com/Articles/49750/Office-Interop-Object-Collection-Technique-The-rig.aspx
- Interop Object在.Net中的引用计数问题
- object c 循环引用计数问题,非常重要。
- (转).net使用Office组件读取Excel,引用Microsoft.Office.Interop.Excel出现的问题
- Python中的引用计数
- c++中的引用计数
- c++中的引用计数
- 在谈引用计数
- wiengine 引用计数问题
- 引用计数问题
- 引用计数的问题
- swift中的自动引用计数以及出现的问题
- Object-C 关于引用计数的说明
- Object-C中内存引用计数
- Object-C 内存管理引用计数
- 监控Python中的引用计数
- delphi中的引用计数接口
- 引用计数错在哪里?
- 组件的引用计数问题
- What open source C++ static analysis tools are available
- Raman's Blog
- ASPJPEGD等比例缩放
- java中set map list的区别
- C/C++基础知识:typedef用法小结
- Interop Object在.Net中的引用计数问题
- Sqlserver 端口问题
- wxWidgets中获得屏幕分辨率
- 如何检查C++中的内存泄漏
- AFS 配置(三)
- 求即时通讯软件:如QQ,并且查找时输入条件后结果中的所有会员都可以看到查找人的发话,这样的一个群功能。
- 函数
- 提高面试水平!
- 雪继续下,生活依旧