【发布时间】:2013-11-28 14:22:26
【问题描述】:
我正在尝试从数据库中取出图像,将其从字节转换为位图图像并将其放置在列表中的扩展视图中。该列表包含与数据库中的条目一样多的扩展视图。在您超过 6 个条目之前,这非常有效。然后它显示警告:
System.OutOfMemoryException:内存不足,无法继续执行程序
这是我的字节到位图转换器:
public class ByteToImageConverter : IValueConverter
{
public BitmapImage ConvertByteArrayToBitMapImage(byte[] imageByteArray)
{
BitmapImage img = new BitmapImage();
using (MemoryStream memStream = new MemoryStream(imageByteArray))
{
img.SetSource(memStream);
memStream.Dispose();
}
return img;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
BitmapImage img = new BitmapImage();
if (value != null)
{
img = this.ConvertByteArrayToBitMapImage(value as byte[]);
}
return img;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
【问题讨论】:
-
如果有“使用”,则无需显式调用 Dispose()。
-
这些字节数组有多大?
-
很难用这么少的信息提供适当的帮助,无论如何你应该为你的图像实现一个延迟加载(和卸载)逻辑以避免内存泄漏。
-
那是我微弱的调试尝试的一部分,我忘了摆脱它!您提到了延迟加载逻辑。这不是我以前遇到过的事情。我的转换尝试是否总是会导致内存泄漏?
标签: c# out-of-memory memorystream bitmapimage expander