다음 코드를 사용하여 이미지를 축소판으로 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의에 관한 것입니다)
이
이 모든 불필요한 코드를 제거하고 이미지를로드 만 시도하여 문제를 분리 봤어 :
여기 내 방법입니까? 로드 된 이미지를 '정상'이미지 디스플레이 컨트롤에 할당하려고 했습니까? –
하나의 이미지를로드 할 때 또는 많은 이미지를로드 할 때 메모리가 부족합니까? 이미지를로드하려고 할 때 특정 이미지가 문제를 일으키는 지 아니면 실패합니까? 이미지가 예외적으로 큽니까? 제발, 더 자세한 내용이나 우리가 할 수있는 최선은 추측입니다. –
@ 짐.안녕하세요, 업데이트를 확인해 주시겠습니까? – OrElse