OutOfMemoryException在C#中未处理Image.FromFile()

时间:2011-06-14 04:04:31

标签: c#

从文件加载图像时出现内存异常..我从数据库中检索文件,可以查看输出文件图像..

String temp = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/img.jpg";

using (FileStream fs = new FileStream(temp, FileMode.Create))
            {
                fs.Write(StudentImage(id), 0, StudentImage(id).Length);
                fParent.picAvatar.BackgroundImage = Image.FromFile(temp);
                //fParent.picAvatar.Image = Image.FromFile(temp2);
            }
private byte[] StudentImage(String _id)
    {
        try
        {
            String sqlCmd = String.Format("SELECT studpic FROM dbo.studentpic WHERE idnum = '{0}'", _id);
            using (SqlConnection con = new SqlConnection(gVar._conString))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(sqlCmd, con);
                using (SqlDataReader r = cmd.ExecuteReader())
                {
                    r.Read();

                    byte[] imgData = (byte[])r["studpic"];
                    return imgData;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            return null;
        }
    }

我错过了任何需要关闭的对象吗?

1 个答案:

答案 0 :(得分:3)

当由于多种原因无法读取图像时,您往往会收到OutOfMemory异常。

在您的情况下,问题是您尚未关闭文件!此外,您正在调用数据库两次。

我建议使用以下代码:

File.WriteAll(temp, StudentImage(id));
fParent.picAvatar.Image = Image.FromFile(temp);