• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-08-28)  C# |   7 条评论  26 
    文章评分 0 次,平均分 0.0

    像包装了文件句柄和数据库连接等非托管资源的类需要特殊处理以确保其资源被适当地释放一样,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+对象,这样同样改善了应用程序的性能。

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/1866.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享