【发布时间】:2014-01-05 21:14:03
【问题描述】:
根据我的阅读,每当您通过其 Source 属性将图像分配给 XAML 元素时,都会进行某种智能缓存。
不幸的是,对于我的应用程序(闪存卡),每次用户在他/她面前轻弹(又名刷卡)卡片时,我都会动态切换 image.Source 属性。它是同一个 XAML 元素,但它的 Source 属性每次都会被替换。
我有 4 组闪存卡,如果我一次最多可以选择 3 组,应用程序可以正常运行,但如果我在计数达到第 52 或第 54 卡左右时选择 4 组,则内存使用超过150MB(这是设置的限制)和我的测试设备(诺基亚 Lumia 520)因内存不足错误而崩溃。
在分析应用程序后,我确定问题是由图像加载事件引起的。
有什么想法吗?
【问题讨论】:
-
您使用什么作为 Source、BitmapImage 或 WriteableBitmap?每次用户滑动时你都会创建一个新图像吗?
-
两者都是。我使用 BitmapImage,每次用户滑动时都会创建一个新图像(我将它翻译成西班牙语,所以我有带有英语和西班牙语图像的图像)。
-
你能分享一些相关的代码吗?如果您尝试在 UriSource 超出范围之前将其设置为“null”,则有时可以阻止 BitmapImage 缓存。你可以试试吗?
标签: c# xaml windows-phone-8