所以我得到了我建的这个程序。有一些代码
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openDialog = new OpenFileDialog();
if (openDialog.ShowDialog() == DialogResult.OK)
{
image1 = new Bitmap(openDialog.FileName);
pictureBox1.Image = image1;
}
}
现在,每当我用按钮更改图片时,ram的使用量就会增加。 我的一个朋友告诉我发生了这件事,因为每次我这样做的时候我都会分配新的记忆空间:&/ p>
new Bitmap(openDialog.Filename);
解决方案是什么? (我试图在谷歌搜索,但我真的不知道该搜索什么...)
编辑:
现在正在努力寻求帮助。 为他人编辑的代码:
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openDialog = new OpenFileDialog();
if (openDialog.ShowDialog() == DialogResult.OK)
{
if (pictureBox1.Image != null)
pictureBox1.Image.Dispose();
image1 = new Bitmap(openDialog.FileName);
pictureBox1.Image = image1;
}
}
答案 0 :(得分:1)
注意:在释放对图像的最后一个引用之前,请始终调用Dispose。否则,在垃圾收集器调用Image对象的Finalize方法之前,不会释放它正在使用的资源。
正如MSDN文档所述,您必须致电Dispose
。如果您想从图像中提取某些内容然后进行处理,最好使用Using
关键字; e.g :
using(var bmp = new Bitmap(bitmapLocation)){
// extract data from bitmap
}
执行后离开using
大括号,将调用位图的Dispose
方法并处理对象。