一个第三方COM组件,在C#项目中添加引用之后,如下面进行使用并释放,但发现该COM组件占用的内存并没有被释放:using ComClassWrapper;ComClass objComClass = new ComClass();
objComClass.Load("文件");
// To do something.
System.Runtime.InteropServices.Marshal.ReleaseComObject(objComClass);
怎样才能回收这类COM组件占用的内存?C# COM 组件 内存
objComClass.Load("文件");
// To do something.
System.Runtime.InteropServices.Marshal.ReleaseComObject(objComClass);
怎样才能回收这类COM组件占用的内存?C# COM 组件 内存
解决方案 »
- C#怎么用16进制表示负数
- DataGridView 的列标题,如何换行?
- 有关SqlDataAdapter.Update 访求使用
- 时间比较问题
- 如何把UltraGrid的列名改成自己需要的名称。
- 泛型创建时,默认容量性能优于指定容量性能,咋回事
- 有用DataAccessApplicationBlock.msi(Microsoft DataAcess Application Block for .Net)做数据访问的没啊??
- 使用C#抓取网页数据,怎么判断抓取的网页是否出现验证码?
- 为什么我用AspNetPager分页控件+datalist(留言板),分页控件只显示一页(每页8行,数据多于两页)
- C# 大数据画图处理
- winform窗口怎么样让运行的时候只保持当前操作的窗口,其他的都关闭
- win7无边框按钮在xp上的问题
有木有大神?
DynamicMethod貌似也不行,无法通过GetMethod获取COM组件的MethodInfo
有木有大神?
DynamicMethod貌似也不行,无法通过GetMethod获取COM组件的MethodInfo
你通过Visual Studio 把COM组件添加到工程中时,VS会自动把COM组件转换为一个互操作程序集,即带有interop的程序,然而你程序中实际用的就是这个互操作程序集,这个互操作程序是一个.NET 组件的,所以你用GC.Collection试试看,关于互操作更多内容可以参考这里:
http://www.cnblogs.com/zhili/archive/2013/01/14/NetInterop.html
有木有大神?
DynamicMethod貌似也不行,无法通过GetMethod获取COM组件的MethodInfo
你通过Visual Studio 把COM组件添加到工程中时,VS会自动把COM组件转换为一个互操作程序集,即带有interop的程序,然而你程序中实际用的就是这个互操作程序集,这个互操作程序是一个.NET 组件的,所以你用GC.Collection试试看,关于互操作更多内容可以参考这里:
http://www.cnblogs.com/zhili/archive/2013/01/14/NetInterop.htmlGC.Collection已经试过无效。interop只是COM和.net之间的一个起到翻译作用的中间代理吧?
有木有大神?
DynamicMethod貌似也不行,无法通过GetMethod获取COM组件的MethodInfo
你通过Visual Studio 把COM组件添加到工程中时,VS会自动把COM组件转换为一个互操作程序集,即带有interop的程序,然而你程序中实际用的就是这个互操作程序集,这个互操作程序是一个.NET 组件的,所以你用GC.Collection试试看,关于互操作更多内容可以参考这里:
http://www.cnblogs.com/zhili/archive/2013/01/14/NetInterop.htmlGC.Collection已经试过无效。interop只是COM和.net之间的一个起到翻译作用的中间代理吧?
对的,你的理解是对的。试试这个方法,更详细的内容参考下面的链接:
http://support.microsoft.com/kb/317109
和这个示例代码的实现:http://code.msdn.microsoft.com/CSAutomateWord-f422cae5#content你可以在线浏览源码的,上面提供了两种方式,你可以参考来解决你的问题,因为上面使用的是Word COM组件的。
感谢你的回复,不过,你给的那两个链接使用的方法就是我提出问题时使用的方法。
我使用的是一个第三方的COM组件,而且提问里的ComClass这个类没有实现IDisposable接口。
我估计是这个COM组件本身的问题,现在能想到的就是动态进程或方法之类的可能才会有点戏
最后用多进程+管道通讯总算搞定了,进程一退出,泄露的内存还能不回收?!