我在删除以PictureBox
. 感谢Hans Passant
我使用他提出的这个片段解决了这个问题:
using (var temp = new Bitmap(openFileDialog1.FileName))
{
pictureBox1.Image = new Bitmap(temp);
}
我试图使代码崩溃,但我不能让它似乎工作,但我不太了解这段代码背后的逻辑。在我做之前:
if (MyImage != null)
{
MyImage.Dispose();
}
...
MyImage = new Bitmap(openFileDialog1.FileName);
pictureBox1.Image = (Image)MyImage;
这甚至非常罕见地导致了resource being used
.
为什么这不会发生在我正在使用的新代码中。我问这个是为了了解封面下发生的事情。我知道这using
保证Dispose()
会被调用,但Disposed()
也会在前面的代码中被调用。大多数情况下,资源的释放速度足够快,但是允许新代码始终以足够快的速度释放图像以使其可以被删除或我们需要对其进行任何处理的最大区别是什么?