C#:在调用Bitmap.save()之后,Dispose()一个Bitmap对象

本文关键字:Bitmap Dispose 一个 对象 之后 save 调用 | 更新日期: 2023-09-27 18:26:53

我有这个:

Bitmap bmp = new Bitmap(image);
//image processing
bmp.Save(path + fileName);

我想知道在这个代码之后是否需要调用CCD_ 1。提前谢谢。

C#:在调用Bitmap.save()之后,Dispose()一个Bitmap对象

我将使用using块和Path.Combine

using(var bmp = new Bitmap(image))
{
    // image processing
    bmp.Save(Path.Combine(path ,fileName));
}

是。

更好的是,你可以将bmp包装在一个使用块中,这将为你处理

using(var bmp = new Bitmap(image))
{
    bmp.Save(...);
}

Save的唯一目的是将图像保存到指定的文件中,它不会更改位图对象

有一个简单的规则:如果创建了一个一次性实例,但还没有将其传递给另一个ower,则应该将其处理掉;由于您已经创建了位图,因此您也应该处理它:

using (Bitmap bmp = new Bitmap(image)) { // <- Creation
  // Image processing
  ...
  bmp.Save(path + fileName);
} // <- You no longer need the bitmap, let's dispose it

如果你已经完成了:是的。仅仅基于

  • 它实现了IDisposable
  • 你受够了

老实说,这两点本质上是整个辩论的——其他一切都是实现细节。尽管在这种情况下,实现细节可能是GDI+句柄,但它们绝对值得正确清理。但你可以用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);
    }