私はこれを持っています:
Bitmap bmp = new Bitmap(image);
//image processing
bmp.Save(path + fileName);
bmp.Dispose()
このコードの後に呼び出す必要があるかどうかを知りたいです。前もって感謝します。
はい。
さらに良いことに、bmp を using ブロックでラップすることもできます。これにより、破棄が処理されます。
using(var bmp = new Bitmap(image))
{
bmp.Save(...);
}
Saveの唯一の目的は、イメージを指定されたファイルに保存することです。ビットマップ オブジェクトは変更されません。
using
ブロックとPath.Combine
using(var bmp = new Bitmap(image))
{
// image processing
bmp.Save(Path.Combine(path ,fileName));
}
簡単なルールがあります。破棄可能なインスタンスを作成し、それを別の ower に渡していない場合は、それを破棄する必要があります。あなたのコードで; Bitmap を作成したので、それも破棄する必要があります。
using (Bitmap bmp = new Bitmap(image)) { // <- Creation
// Image processing
...
bmp.Save(path + fileName);
} // <- You no longer need the bitmap, let's dispose it
完了した場合: はい。という事実に単純に基づいて、
IDisposable
し、正直に言うと、これらの 2 点が基本的に議論のすべてです。それ以外はすべて実装の詳細です。この場合、実装の詳細はおそらく 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);
}