感谢您的关注。
我正在测试我的一个小程序,它旨在从SQL Server上传和检索图像。
当我运行下面的代码时,我得到一个“Out of Memory”错误 - 虽然我的PC有8GB内存,而teh程序只是一个单一的形式。
Dim cmd As New SqlCommand("SELECT DP FROM PersonsA WHERE Members_ID = 1", con)
cmd.CommandType = CommandType.Text
Dim ImgStream As New IO.MemoryStream(CType(cmd.ExecuteScalar, Byte()))
PictureBox2.BackgroundImage = Image.FromStream(ImgStream)
ImgStream.Dispose()
con.Close()
System.Drawing.dll中出现未处理的“System.OutOfMemoryException”类型异常
其他信息:内存不足。
调试突出显示BackgroundImage =
行,如果我将BackgroundImage
更改为Image
,则程序可以正常工作。但是我这样牺牲了布局选项。
为什么会发生此错误,并且只有在BackgroundImage
?
答案 0 :(得分:0)
在阅读器上设置一个断点,然后当它击中该断点时按F10一次,然后检查并确保你有一些东西,它确实是二进制的(图像)......
Dim cmd as New SqlCommand("SELECT DP FROM PersonsA WHERE Members_ID = 1", con)
Dim reader as SqlDataReader = cmd.ExecuteReader()
Dim obj as Object, B() as Byte
If reader.HasRows Then
While reader.Read()
obj = reader.GetValue(0)
Exit While
End While
If Not IsDBNull(obj) Then
B = DirectCast(obj, Byte())
Using ms as New IO.MemoryStream(B)
PictureBox2.BackgroundImage = Image.FromStream(ms)
End Using
End If
End If