windows phone 8:c#系统内存不足异常:从web加载大量图像

windows phone 8:c#系统内存不足异常:从web加载大量图像,c#,memory,windows-phone-8,storage,windows-phone,C#,Memory,Windows Phone 8,Storage,Windows Phone,这是我在Windows Phone环境下开发的第一个应用程序之一,所以我基本上是边学习边学习。我有一个带有pivot控件的应用程序,在三个pivot项中的每一项上都有一个LongListSelector。当您滚动时,来自web的图像将加载到longlistselector中,这是无限滚动(因为它只会在底部看到您的图像时加载更多)。 然而,在测试中,如果我疯狂地滚动以便下载大量图像,我会得到以下错误: 'System.OutOfMemoryException' occurred in System

这是我在Windows Phone环境下开发的第一个应用程序之一,所以我基本上是边学习边学习。我有一个带有pivot控件的应用程序,在三个pivot项中的每一项上都有一个LongListSelector。当您滚动时,来自web的图像将加载到longlistselector中,这是无限滚动(因为它只会在底部看到您的图像时加载更多)。 然而,在测试中,如果我疯狂地滚动以便下载大量图像,我会得到以下错误:

'System.OutOfMemoryException' occurred in System.Windows.ni.dll
因为我每次都加载一些相同的图像,所以我实现了PersistentImageCache(Kawagoe.Storage)来缓存这些图像

我是否必须在用户向下滚动时卸载图像,并在用户向上滚动时重新加载它们? 还是清除每个X图像的内存?(我有HTC 8S,所以这可能不是内存更多的手机的问题)


非常感谢。

由于您为WP8开发,请考虑使用ListListS选择器的网格布局,如本示例所示:

此外,他们还采用了许多先进的内存节省技术,如分页3页内容、在项目实现方法上延迟加载内容和位图缓存

我没有问题显示100个Hubbiles(臭名昭著的内存chompers)

奖金提示:
您可以通过设置较低的maximumflickvelocity来控制滚动速度,这会让您有更多的时间做您需要做的事情。

这显然不是一个解决方案,而是我想到的一件事,您为手机加载的图像的分辨率是多少?您使用的图像是否比屏幕大小所需的图像大?您使用的是库的编译版本还是项目中的源代码?@Caimen原始图像是400x300px,我正在将其大小调整为210x158px,因此有点损失。@NeilTurner我只是直接在手机上运行(调试)。编译它会完全不同吗?是的,因为代码很旧,是为WP7设计的。WP8中的存储处理方式也略有不同。此外,如果使用源代码,调试也会更容易。