2
如果我有一些Bitmap bmp1
並設置PictureBox.Image
這個bmp1
再晚些時候將其設置爲Bitmap bmp2
,是bmp1
適當地PictureBox
處置或做我需要一個參考保持到bmp1
和它Dispose
一次我改變Image
到bmp2
?一旦圖像被設置爲另一個位圖,PictureBox中的位圖會發生什麼?
如果我有一些Bitmap bmp1
並設置PictureBox.Image
這個bmp1
再晚些時候將其設置爲Bitmap bmp2
,是bmp1
適當地PictureBox
處置或做我需要一個參考保持到bmp1
和它Dispose
一次我改變Image
到bmp2
?一旦圖像被設置爲另一個位圖,PictureBox中的位圖會發生什麼?
PictureBox
無法知道您是否要放置圖像 - 您可能會在應用程序的其他地方使用它。所以它沒有明確的Dispose
它。如果PictureBox
持有對它的最後一個引用,它就有資格進行垃圾回收,並且Dispose
將作爲最終確認的一部分進行調用,但是如果發生這種情況取決於垃圾回收器。與此同時,尚未配置的Bitmap
正在消耗非託管資源,並且很可能會打開一個流,以防止對源文件進行修改,因此,「隨時」對事情進行清理是不好的做法。
如果你知道你在修改的東西PictureBox.Image
點的時間與Bitmap
完成後,添加一個額外的幾行權有處置舊的,就大功告成了:
Image tmp = myPictureBox.Image;
myPictureBox.Image = newImage;
if (tmp != null)
{
tmp.Dispose();
}
這是我懷疑的,謝謝。 – KDecker