非托管资源创建与释放
来源:互联网 发布:wind数据库 华东师大 编辑:程序博客网 时间:2024/06/04 18:58
现象:
主程序调用我的DLL库无法运行;异常信息显示
BUG:
Exception:参数无效。
System.ArgumentException
Stack Trace:
在 System.Drawing.Graphics.CheckErrorStatus(Int32 status)
在 System.Drawing.Graphics.DrawString(String s, Font font, Brush brush, RectangleF layoutRectangle, StringFormat format) 在 Nova.Rss.RssToImage.RssToSingleLineImage(RssInfo rssInfo, Int32 wndHeight, Color backColor, List`1& imgList)
解决过程:
最后将问题锁定到了其中的参数Font font上,替换从上层传入的font为固定的font;异常信息出现在了其他的含有font参数的函数中。
推断,主程序所赋值的最外层接口的Font有问题,该font为接口所在类的一个成员变量。查看外层代码后发现,外层的所传入到类成员变量的font,来自于一个公共的参数库。所以外层传入的这个font并没有问题。
我的dll库这个类含有一个Dispose方法,而这个方法中有一个语句执行的是对成员变量_font的注销操作,问题就出在这里。
外层调用了我的Dispose方法后,导致了外层所用的font的释放。
结论:
释放资源应该遵循谁创建谁释放原则。
0 0
- 非托管资源创建与释放
- 托管与非托管资源介绍及 资源的释放
- 释放托管与非托管资源(析构3)
- C# 非托管资源释放
- 在托管代码中释放托管和非托管资源
- 内存的释放--托管与非托管
- C#-如何释放非托管资源
- .NET 托管资源与非托管资源
- 托管资源与非托管资源
- C# 托管资源与非托管资源
- 托管资源与非托管资源
- C# 托管资源 与 非托管资源
- 托管资源与非托管资源
- C# 托管资源 与 非托管资源
- 正确实现 IDisposable接口,释放托管或非托管资源
- C#托管与非托管资源
- C#中的非托管资源释放(Finalize&Dispose)
- C#中的非托管资源释放(Finalize&Dispose)
- solr配置文件solrconfig.xml解析
- cocoapods使用
- 阿健的iOS开发Demo(应用图标的九宫格排列、看图猜词游戏)
- Canvas和Paint画折线图
- Eclipse 利用JDBC连接MySQL步骤笔记
- 非托管资源创建与释放
- listview的常见问题<转>
- 正则表达式(regular expression)简明教程
- android MotionEvent的相关的类的介绍
- opencv3 确定图像强角点-goodFeaturesToTrack函数
- 黑马程序员--IO流
- Ubuntu环境下sublime3 nodejs安装与插件配置
- 蓝懿ios 技术内容和心得交流分享 11.5 控件
- opencv3 确定图像强角点-goodFeaturesToTrack函数-滚动条