我有这个:
Bitmap bmp = new Bitmap(image);
//image processing
bmp.Save(path + fileName);
我想知道在这段代码之后是否需要调用bmp.Dispose()
。
提前感谢您。
using
块和 Path.Combine
。using(var bmp = new Bitmap(image))
{
// image processing
bmp.Save(Path.Combine(path ,fileName));
}
是的。
更好的做法是,你可以将bmp放在using块中,这样就会自动处理它的释放。
using(var bmp = new Bitmap(image))
{
bmp.Save(...);
}
Save的唯一目的是将图像保存到指定文件中,它不会改变位图对象。
有一个简单的规则:如果您已经创建了一个一次性实例并没有传递给另一个所有者,那么您应该将其销毁。在您的代码中;由于您已经创建了 Bitmap,因此您也应该将其 dispose。
using (Bitmap bmp = new Bitmap(image)) { // <- Creation
// Image processing
...
bmp.Save(path + fileName);
} // <- You no longer need the bitmap, let's dispose it
IDisposable
,并且using
来使生活变得更加轻松:using(var bmp = new Bitmap(image))
{
// image processing
bmp.Save(path + fileName);
}
是的,您需要调用 Dispose()
方法,否则位图资源将在垃圾回收器调用终结器方法之前被使用。
只需使用 using
运算符:
using(var bmp = new Bitmap(image))
{
// image processing
bmp.Save(path + fileName);
}