我正在使用以下代碼片段將圖像作爲縮略圖加載到FlowLayoutPanel控件中。不幸的是我得到了一個OutOfMemory異常。加載圖像時出現內存不足異常
正如你已經猜到了內存泄漏的行
Pedit.Image = System.Drawing.Image.FromStream(fs)
所以,我怎麼能優化下面的代碼中發現?
Private Sub LoadImagesCommon(ByVal FlowPanel As FlowLayoutPanel, ByVal fi As FileInfo)
Pedit = New DevExpress.XtraEditors.PictureEdit
Pedit.Width = txtIconsWidth.EditValue
Pedit.Height = Pedit.Width/(4/3)
Dim fs As System.IO.FileStream
fs = New System.IO.FileStream(fi.FullName, IO.FileMode.Open, IO.FileAccess.Read)
Pedit.Image = System.Drawing.Image.FromStream(fs)
fs.Close()
fs.Dispose()
Pedit.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom
If FlowPanel Is flowR Then
AddHandler Pedit.MouseClick, AddressOf Pedit_MouseClick
AddHandler Pedit.MouseEnter, AddressOf Pedit_MouseEnter
AddHandler Pedit.MouseLeave, AddressOf Pedit_MouseLeave
End If
FlowPanel.Controls.Add(Pedit)
End Sub
更新:同時加載多個圖像時出現的問題(在300dpi的3264x2448px - 每個圖像約爲3MB的)
您是否嘗試過通過刪除所有多餘的代碼,只嘗試加載圖像隔離問題?你有沒有嘗試將加載的圖像分配給「正常」圖像顯示控件? – 2011-01-31 16:58:01
加載一張圖像或多張圖像後,內存是否耗盡?它只是一個特定的圖像給你帶來麻煩,或者當你嘗試加載任何圖像時會失敗嗎?圖像特別大嗎?請詳細說明我們能做的最好的事情是猜測。 – 2011-01-31 17:05:24
@Jim。你好,請你檢查一下更新嗎? – OrElse 2011-01-31 17:12:49