我在将SQL映像导出到文件时遇到问题。我首先初始化一个List。 MyRecord是一个具有GraphicName和Graphic属性的类。当我试图通过列表并将MyRecord.Graphic保存到磁盘时,我得到第一个机会例外类型'System.ObjectDisposedException'。我意识到这是因为当我将字节从数据库转换为图像时,我使用使用语句和MemoryStream。我不能使用using语句,它一切正常,但是我担心在多达6000条记录上的内存使用/内存泄漏。有没有另一种方法将字节转换为图像或者是否有更好的设计来完成此操作?在不使用MemoryStream的情况下将字节[]转换为图像
... prior code
using (SqlDataReader reader = sqlCommand.ExecuteReader())
{
while (reader.Read())
{
MyRecord record = new MyRecord();
record.GraphicId = reader["GRAPHIC_ID"].ToString();
record.Graphic = !reader.IsDBNull(reader.GetOrdinal("IMAGE")) ? GetImage((byte[])reader["IMAGE"]) : null;
records.Add(record);
}
... more code
private Image GetImage(byte[] rawImage)
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(rawImage))
{
Image image = Image.FromStream(ms);
return image;
}
}
你为什么不能保存'byte []'直接写入文件? – Oded 2013-05-09 19:32:08
@Oded我可以,但图像得到显示,所以在某些时候我也需要图像。你的是重新设计的可能解决方案。 – jac 2013-05-09 20:45:06