Я использую следующий фрагмент кода для загрузки изображений в виде эскизов в элемент управления 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
Update: Проблема возникает при загрузке количества изображений (3264x2448px в 300dpi - каждое изображение о 3Mb в)
Вы пытались изолировать проблему, удалив все лишнее код и пытается загрузить только изображение? Вы пытались назначить загруженное изображение (если оно так далеко) в «обычный» элемент управления отображением изображения? –
У вас заканчивается память при загрузке только одного изображения или после многих изображений? Это только один конкретный образ, который дает вам проблемы, или он не работает при попытке загрузить любое изображение? Изображения исключительно большие? Пожалуйста, более подробно или лучшее, что мы можем сделать, это догадываться. –
@Jim.Привет, не могли бы вы проверить обновление? – OrElse