GDI+对象的释放

    像包装了文件句柄和数据库连接等非托管资源的类需要特殊处理以确保其资源被适当地释放一样,Pen、Brush和其他代表图形基元的GDI+类也在此范畴之内,因为他们包装了GDI+的句柄。如果关闭GDI+句柄失败,会导致削弱性的资源泄漏,特别是需要长时间运行的应用程序。为安全起见,对于Pen、Brush及其他基元类应该调用Dispose来确定性地释放他们所占用的资源。Graphics对象是以编程方式创建的(而不是由PaintEventArgs获得的),甚至要释放Graphics对象。
释放GDI+对象的方法之一是 —— 手动调用Dispose: 

Pen pen  =   new  Pen(Color.Black);
... ... ...
pen.Dispose();

    C#程序员可能更喜欢一种特殊的using形式,这种形式会自动生成Dispose调用并在finally块中关闭对象。这种技术的优点之一就在于即使出现异常,也可以确保对Dispose的调用:

using  (Pen pen  =   new  Pen(Color.Black)) {
... ... ...
}

    另一种方法是在应用程序启动的时候创建钢笔(Pen)、画笔(Brush)及其他图形基元类,然后根据需要使用和重用它们。这样做会显著的减少应用程序所消耗的GDI+资源数量,并且几乎不需要调用Dispose来释放每个GDI+对象,这样同样改善了应用程序的性能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值