私は単純な画像サイズ変更プログラムを書いています。複数のファイルを.exeにドラッグすると、各ファイルが移動され、サイズが変更されます。これは、OOM(メモリ不足)例外がスローされている特定のポイントまで動作します。私はビットマップでDisposeを呼び出してNullに設定しようとしましたが、どちらも何もしていないようです。どのようにC#でオブジェクトから同じメモリを再利用しますか? (ビットマップ特に)
Bitmap current_image;
for (int i = 0; i < imagesfilepath.Count; ++i)
{
// Load the image.
if (current_image != Null)
{
current_image.Dispose();
current_image = Null;
}
current_image = (Bitmap)Image.FromFile(imagesfilepath[i], true);
// Resize it.
// Save it.
}
例外は、通常1.5GBを使用した後にスローされます。ユーザーが一度にサイズを変更できるイメージの量を制限することでこの問題を回避することができますが、1つのBitmapにメモリを割り当てて繰り返し使う必要はありませんか?
保存するコードとリソースの解放方法を表示できますか? – BrokenGlass
私たちは本当にここでもっとコードを見る必要があると思います。そこにあるものから、その例外を経験すべきではありません。 –