繁体   English   中英

System.OutOfMemoryException-渲染3-5个不同的高分辨率图像时

[英]System.OutOfMemoryException - When rendering 3-5 different high-res images

背景:我有一个带有页面的应用程序,该页面显示了几个低分辨率的缩略图(有些是100 x 150,另一些则更大,更小)。 当用户点击图像时,会将其带到另一个名为“ ImageViewer”的页面(将图像名称存储在全局字符串中,然后使用该字符串来完成图像的来源)。 此页面显示全分辨率图像并具有缩放选项。

问题:当渲染3-5张全分辨率图像(这些图像大约为38 MP)时,即使用户在查看后轻按,应用也会因“ System.OutOfMemoryException”而崩溃。

我知道这些图像很大,但是有没有办法在按下后退按钮后从内存中“删除”它们? 当按下后退按钮时,我尝试将图像源更改为1 x 1图像,但好像Windows Phone“记住”了渲染。

谢谢!

建议不要在代表图像的对象上调用Dispose()方法,而不是调用GC.Collect()。 这将使您可以更好地控制何时释放对象的内存,并应提高应用程序的性能。

您用于这些图像的对象类型很可能继承自.Net Bitmap类,该类围绕GDI +位图。 调用Dispose()方法将直接释放与GDI +位图关联的基础数据。 通过将关联的图像对象设置为null,您已经在执行此操作,但是这是一种循环方法,而不是您选择的时间。 有关在.Net中处理对象的更多信息,请参见IDisposable.Dispose方法的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM