【问题标题】:What happens to a Bitmap in a PictureBox once Image is set to another Bitmap?将 Image 设置为另一个位图后,PictureBox 中的位图会发生什么情况?
【发布时间】:2016-04-18 20:42:49
【问题描述】:

如果我有一些Bitmap bmp1 并将PictureBox.Image 设置为bmp1,那么稍后将其设置为Bitmap bmp2bmp1 是否由PictureBox 正确处理或者我需要保留参考一旦我将Image 更改为bmp2 ,它就变为bmp1Dispose

【问题讨论】:

    标签: c# winforms bitmap


    【解决方案1】:

    PictureBox 无法知道您是否要处理该图像——您可能在应用程序的其他地方使用它。所以它没有明确地Dispose 它。如果PictureBox 持有对它的最后一个引用,则它有资格进行垃圾收集,并且Dispose 将作为终结的一部分被调用,但何时发生这种情况取决于垃圾收集器。与此同时,尚未处置的Bitmap 正在消耗非托管资源,并且很可能会保持一个流打开,这将阻止对源文件的修改,因此让事情“随时”被清理是不好的做法。

    如果您知道在更改 PictureBox.Image 指向的内容时已经完成了 Bitmap,请在此处添加额外的几行以处理旧的,然后您就完成了:

    Image tmp = myPictureBox.Image;
    myPictureBox.Image = newImage;
    if (tmp != null)
    {
        tmp.Dispose();
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 2010-09-22
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      相关资源
      最近更新 更多