我有一個C#程序,它從目錄中的圖像創建位圖列表。它將使用整個Bitmaps列表生成一張新圖像,然後保存。當用戶加載一個新目錄重複該過程時,位圖列表被清除並重新填充。在創建對象「新位圖(路徑)」時加載位圖。正確處理沒有垃圾收集的未引用圖像C#
我有當用戶執行以下步驟發生一個問題:從目錄
- 加載圖像1
- 選擇不保存,而是從目錄加載圖像2次
- 試圖通過保存覆蓋目錄中的圖像1
- 由於「GDI +中的一般錯誤」,程序無法保存,因爲它仍在「使用」正在被覆蓋的圖像。
從目錄1加載位圖的原始列表確實被清除,然後從目錄2.然而,隨着圖像填充,Bitmap.Save()拒絕覆蓋它以前加載除非我呼叫系統的圖像。我執行Clear()後,GC.Collect()。
我很確定這個問題與保留位圖有關,即使沒有引用,否則爲什麼垃圾收集能解決問題?這是解決這個問題的正確方法,還是有一種「適當」的方式來處理C#中的位圖?謝謝。
你通過'Bitmap.FromStream'加載它們?你目前如何「處置」他們?通過調用'.Dispose()'? –
哦,對不起,我不是;我正在使用新的位圖(路徑)。讓我更新這個問題。 – limitlessinfinity
我沒有調用.Dispose();出於某種原因,沒有想到。哦,jeez,對於這個愚蠢的問題感到抱歉。我想我會自己回答,除非你想這樣做。 – limitlessinfinity