我需要调用Graphics.Dispose()吗?

aln*_*h29 5 .net dispose

在VB.NET程序中,我正在创建一个新的位图图像,然后我调用Graphics.FromImage来获取一个Graphics对象来绘制位图.然后将图像显示给用户.

我见过的所有代码示例总是在Bitmaps和Graphics对象上调用.Dispose(),但是当没有触及磁盘上的文件时是否需要这样做?是否有任何其他非托管资源,这些对象可能已被抓取,垃圾收集器无法清除?

Chr*_*nce 6

将其包含在您需要的范围的using语句中.然后不要担心显式调用Dispose()

伪代码:

using(new Graphics() = Graphics.FromImage)
{
     //Magic happens...
}
Run Code Online (Sandbox Code Playgroud)


Mit*_*eat 5

是.

始终调用Dispose()任何实现的对象IDisposable.图形对象使用的GDI句柄是不受管理的,并且在完成它们时需要进行处理.

最佳做法是包裹一个using块.关于这个主题,BTW有几个SO问题.