質問: Graphics.FromImage(bmp)) { g.DrawImage(src, 0, 0, src.Width + 1, src.Height + 1); } return bmp; } ``` このButton1を連続で何回も押すとプロセスメモリがどんどん増えていきます。 ScaleBmp関数の中でBitmapを生成してreturnしているので使用メモリが増えるのは当然なのですが巨大な画像の場合はものすごい勢いで増えていきます。 BitmapをpictureBox1.Imageに渡している場合、DisposeするとエラーになるためにDisposeすることができず、メモリが増えてしまいます。 しばらく放置すると.NetFrameworkが勝手にどこかでGCを実行するので不要になったBitmapが解放されるのですが、Button1を連打すると解放される前にメモリリークを起こしそうで困っています。 button1_Click関数の中の最後にGC.Collect()を実行すればいいのかとは思いますが、Button1を連打する度にGCを呼ぶのもよくないと思ってしまいます。 何か対策はありますでしょうか? どうぞよろしくお願い致します。 Windows10 + VisualStudio2015 C#
回答: これで改善しませんかね? var oldImage = pictureBox1.Image; pictureBox1.Image = ScaleBmp(img); oldImage.Dispose();