注册 登录
编程论坛 VB.NET论坛

内存不足的问题

smy727 发布于 2013-06-08 12:54, 4192 次点击
数据库字段绑定到textbox控件,PictureBox控件显示textbox为路径的图片,导航条显示前后移动N条记录后,显示错误“内存不足”,怎么解决?
10 回复
#2
不说也罢2013-06-08 13:36
这种情况一般并不是由机器本身的“内存不足”引起。常见于Image.FromFile后面跟的参数不是正确的图片地址,或者图片地址根本不存在而引起的
1、尝试在Image.FromFile之前,清空下图片:PictureBox1.Image = Nothing,然后再PictureBox1.Image = Image.FromFile(.....)
2、保证Image.FromFile后面跟的参数filename是个正确的图片文件的地址。
象楼主PictureBox控件显示textbox为路径的图片,应当防止textbox显示路径的值为空或是一个不存在的路径。
#3
smy7272013-06-08 16:42
我是这样做的:
程序代码:
   Private Sub TextBox23_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox23.TextChanged
        PictureBox2.Image = Nothing
        If TextBox23.Text <> Nothing Then
            If Not ((TextBox23.Text)) Then
                MessageBox.Show("找不到文件;" & TextBox23.Text)
                TextBox23.Text = "d:\数据库\空白文件.jpg"
            End If
            PictureBox2.Image = Image.FromFile(TextBox23.Text)
        Else
            PictureBox2.Image = Nothing
        End If
    End Sub
数据库记录移动到大约100个记录以后就出现错误,停到这一行
PictureBox2.Image = Image.FromFile(TextBox23.Text)

只有本站会员才能查看附件,请 登录
#4
不说也罢2013-06-08 17:59
从你贴出的代码来看是没有问题的,也应当排除与机器配置的关系。
你可以这样做:使用TRY模块拦截错误,或者在调试中断时添加一行:
msgbox(textbox23.text)
看看所传的值指的是哪一个图片文件。然后新建一个项目单独测试picturebox加载该图片文件是否会引发此错误。

既然代码已能执行到这一句,说明该文件是存在的有效文件。
分析认为是该值指向的图片文件不是有效的图像格式文件的可能性大。,或者如果GDI+不支持文件的像素格式,则此方法将引发OutOfMemoryException异常
#5
smy7272013-06-09 12:02
问题还是存在,我都试过了,应该不是图片文件的原因,直接定位到出现错误的记录是图片加载正常。
加TRY后出现下面的错误:
只有本站会员才能查看附件,请 登录
#6
smy7272013-06-09 12:18
这样测试了下:
1、打开程序、显示textbox路径下的目标图片文件后定位其它图片文件
2、替换textbox路径下的目标图片文件时(同文件名)系统提示“此文件已在其它程序中打开”
所以本人以为既然PictureBox显示的不是这个文件可是内存中还存在。
#7
不说也罢2013-06-09 17:46
你能够让我重现你的错误么?
或者你尝试将PictureBox2.Image = Image.FromFile(TextBox23.Text)的代码写到导航条的某个事件中。

[ 本帖最后由 不说也罢 于 2013-6-9 17:51 编辑 ]
#8
smy7272013-06-13 12:14
我都试过了
#9
不说也罢2013-06-13 12:28
既然你都测试过了,看来你写的代码应当不可能有问题的了。我又不能重现你的问题,此贴就讨论到这里吧。
你还可以以.net picturebox 内存不足作关键词,在网上搜寻其它可能解决你问题的办法
#10
吾心无待2013-06-20 20:48
代码并没逻辑错误,只是Image.FromFile(TextBox23.Text)被调用多次产生的图片占用的内存没被释放,PictureBox的Image属性不断指向新产生的图像实例。程序不关闭内存占用爆增。没事多写几个强制垃圾回收GC.Collect对占内存的程序有好处
#11
smy7272013-07-03 12:16
谢谢吾心无待,测试通过
1