【发布时间】:2011-09-15 17:48:08
【问题描述】:
我有一个图片数据库和幻灯片放映两个 Windows 窗体程序。
幻灯片不断更新显示的图片框而不增加
每个新的图片切换使用的内存。但是,我有第二种形式
有 50 个图片框,用于显示要添加到数据库中的图片的缩略图。由于每个大小 (57,40) 的图片框都使用小尺寸的缩略图 (
大约 30 个大小 (57,40) 的图片框是从 >3MB 的 .jpg 源文件加载的,IDE 内存使用量上升到大约 2.1GB。 (使用
问题表明,图像的平均 .jpg 文件大小 > 3MB 每个高清佳能相机 .jpg 图像被加载到 30 个显示的缩略图图片框中,我开始开始点击周围选择显示的图片,并且使用的内存迅速增加2.3GB 内存使用导致 Out of Memory 崩溃。
这是 VB2010 或 .NET 4.0 中的错误吗?
一旦所有图片都显示为缩略图,鼠标单击面板上包含所有缩略图的 50 个图片框中的任何一个都会更新表单本身上的单个大图片框,以将图片显示在一个大小为(1024 ,768)。单击任何缩略图时,单个大图片框会显示文件中的相关图片,但同时,每次单击事件的系统内存增加约 240KB。最终,当系统内存使用量超过 2.3GB 时,程序会因内存不足错误而崩溃。
如何让程序恢复同一个图片框使用的内存
只更新了一张图片?
部分代码如下:
' Each Thumbnail has a click event
'PB49 is a PictureBox max size (57,40) used as a thumbnail display, all 50 are on a panel
Private Sub PB49_Click(sender As System.Object, e As System.EventArgs) Handles PB49.Click
'PB(50) is an Integer Array flagging Pictures to add
If PB(49) = 1 Then PB(49) = 0 Else PB(49) = 1
If PB(49) = 1 Then
CheckBox49.Checked = True 'Tiny Checkbox on thumbnail
F$ = ListAddFiles.Items(48) 'ListFileBox of FileNames
PBx1.Image = Image.FromFile(F$) 'Gets filename and path and loads image into PictureBox
PBx1.Visible = True 'Large PictureBox (1024,768)shows Pic F$ located on Form
Else
CheckBox49.Checked = False
PBx1.Image = Nothing
PBx1.Visible = False
End If
End Sub
我在安装XP PRO 32-Bit SP3 4GB RAM 上使用Visual Studio Ultimate SP1 updated .NET 4.0。
【问题讨论】:
-
你在处理需要处理的对象吗?
-
你不应该在你的问题中使用这么多
?。 -
这绝对是你的错误,而不是 VS。
标签: visual-studio visual-studio-2010 out-of-memory