我使用c#.net CF 2.0爲Symbol MC75A創建軟件。我們掃描條形碼並返回庫存信息,但我試圖添加從網址獲取圖像的功能。每次掃描都會使用來自數據庫的新數據刷新屏幕,並從新網址獲取圖像。它掃描幾個條形碼並返回可能是4/5圖像而沒有問題,然後突然發生OutOfMemoryException。利用獲取圖像的代碼IM是:.net Compact Framework 2.0 - OutOfMemory異常下載圖像時
public Bitmap GetImage(string URL)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
myRequest.Method = "GET";
myRequest.AllowWriteStreamBuffering = false;
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(myResponse.GetResponseStream());
myResponse.Close();
return bmp;
}
調用方式:
pbImage.Image = GetImage(ProductImage);
pbImage.SizeMode = PictureBoxSizeMode.StretchImage;
我已經嘗試過每一個新的處置圖像與pbImage.Image.Dispose GET(),但仍然得到同樣的例外。圖像大小在100KB到550KB之間。無論它是否有所不同,圖像尺寸每邊都超過1000像素。
我是否錯過了重新獲取之前處置的正確方式,或者它以某種方式緩存了所有這些圖像,然後創建了outofMemory異常?
圖像進入臨時IE文件。您可能想要刪除瀏覽記錄。有時候使用像fiddler或wireshark這樣的嗅探器可以幫助隔離下載問題。 – jdweng
它總是打破在同一個圖像? System.Drawing因拋出OutOfMem而出名的原因很多。這些可以通過try/catch來處理。 –
您的myRespones.Close()應該位於finally或using塊中。你確定沒有其他例外嗎? –