【发布时间】:2015-11-02 17:39:17
【问题描述】:
我的 WPF UI 将我使用的所有图像保存在内存中。下面是相关的留存率图表。使用 ANTS Memory Profiler 8.7,我已经确定我的代码没有保留任何这些对象。我已经编写了代码,以便对同一图像的多个请求只创建一个图像,但这给我留下了一个问题,即我的应用程序中有足够的图像在它们同时加载时崩溃。我在运行此内存配置文件时关闭了此代码。我需要刷新这些图像。我什至求助于手动调用GC.Collect,这并没有减少使用的内存。有东西拿着这些图片,这不是我的代码。
这是我如何公开BitmapImage 然后绑定到Image.Source 的代码。这不包含我现在关闭的图像到路径字典缓存服务。
public BitmapImage Image
{
get
{
var image = new BitmapImage();
image.BeginInit();
image.UriSource = a_url;
image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
image.EndInit();
image.Freeze();
return image;
}
}
// The XAML
<Image Source="{Binding Image, Mode=OneWay}"/>
不是重复的
我已经确定BitmapImage 被保留并明确调用了GC.Collect,它什么也没做。问题不在于 GC。当我在代码中创建对象时,我也总是Freeze 我的BitmapImage 对象。这不是我第一次来。
【问题讨论】:
-
显示加载(和处理)图像的代码
-
感谢您给我猩红色的“D”,尽管这不是直接复制的。我想我会尝试另一个论坛。
-
您正在使用一个名为“WPF Animated GIF”的开源库?
-
@GlenThomas,没有听到这些图片,但我正在其他地方使用它。
-
@ErnodeWeerd,我已经阅读了整篇文章。我根本不使用流。你建议我这样做吗?
标签: wpf memory-leaks