一旦Image设置为另一个Bitmap,PictureBox中的Bitmap会发生什么?

时间:2016-04-18 20:42:49

标签: c# winforms bitmap

如果我有一些Bitmap bmp1并为此PictureBox.Image设置了bmp1,那么稍后将其设置为Bitmap bmp2bmp1会被PictureBox正确处理掉{1}}或者,当我将bmp1更改为Dispose后,是否需要继续引用Imagebmp2

1 个答案:

答案 0 :(得分:4)

PictureBox无法知道您是否要处置图像 - 您可能正在应用中的其他位置使用它。所以它没有明确Dispose它。如果PictureBox持有对它的最后一个引用,它就有资格进行垃圾收集,并且Dispose将作为最终化的一部分被调用,但是当发生这种情况时,由垃圾收集器决定。与此同时,尚未处置的Bitmap正在消耗非托管资源,并且很可能会打开一个流来阻止对源文件进行修改,因此,“无论什么时候”都是不好的做法,让事情得到清理。

如果您知道在更改Bitmap指向的PictureBox.Image时已完成Image tmp = myPictureBox.Image; myPictureBox.Image = newImage; if (tmp != null) { tmp.Dispose(); } ,请在此处添加额外的几行以处理旧的行,并且您已完成:

{{1}}