2010-11-01 28 views
1

我有一系列位圖圖像需要使用.NET(C#)保存,但運行到通用的GDI +錯誤。重新使用Image.Save,GDI的位圖變量+錯誤

我想重用相同的變量,這可能是我的問題。

例如:

Bitmap pic = MethodThatReturnsBitmap(); 
pic.Save(MyPath); 

pic = AnotherMethodThatReturnsBitmap(); 
pic.Save(AnotherPath); 

我是否需要引入獨特的變量和/或每個.Save()之間處置?

+0

很難說只是這段代碼有什麼問題,但它不可能是你使用同一個變量的原因,因爲它只是一個指針。 – Doggett 2010-11-01 23:43:36

+0

我會建議在第一次保存後添加一個斷點或一個小的延遲,看看它是否有效(僅用於測試)。這可能是一個處置問題。 – Inisheer 2010-11-01 23:50:28

+0

@Doggett - 我把它簡化了一些,我在不同的測試機器上得到了不同的結果,運行類似的代碼,所以錯誤並不總是一致的。換句話說,它有時會起作用,但偶爾也會拋出'Save'異常。我傾向於認爲延遲/處置(正如AJ和JTA所建議的)是解決方案。 – JYelton 2010-11-01 23:53:15

回答

3

GDI +對資源管理真的很挑剔。我發現,如果有疑問,總是用.Dispose()來完成一組位圖操作。所以,簡單的答案是,我認爲你需要Dispose()。我會更進一步,並將兩個位圖放在using聲明中。

using(Bitmap pic = MethodThatReturnsBitmap()) 
{ 
    pic.Save(Path); 
} 
using(Bitmap pic = AnotherMethodThatReturnsBitmap()) 
{ 
    pic.Save(AnotherPath); 
} 
+1

似乎不太可能是問題所在,如果這是真的,那麼您無法保存圖像而無需事後處理。當然,如果你不打算做任何其他事情,總是會更好地處置或使用。 – Doggett 2010-11-01 23:56:18

+0

事實證明,當我調用'Save'時,我的一個對象的Image屬性拋出了異常;通過實例化一個新的位圖,並使用using語句,問題就消失了。感謝您的建議。 – JYelton 2010-11-02 01:02:52

相關問題