我的紧凑型框架应用程序通过将所有项目渲染到一个大的位图表面,然后将该位图复制到屏幕上的偏移位置来创建一个平滑滚动列表,以便只显示适当的项目。旧版本只渲染当时应该出现在屏幕上的项目,但这种方法对于平滑滚动界面来说太慢了。
最初创建大位图时,它偶尔会生成 OutOfMemoryException。如果用户对设备执行软重置并再次运行应用程序,则可以毫无问题地执行创建。
看起来这个位图不是在程序内存中生成的,因为应用程序使用的程序内存量与新的平滑滚动方法之前使用的程序内存量大致相同。
有什么方法可以防止这个异常吗?有什么方法可以在抛出异常之前释放我需要的内存(无论它在哪里)?
最佳答案
我建议回到只渲染部分数据的旧机制,因为完全渲染的数据的大小显然是一个问题。为了帮助防止渲染问题,我可能会在当前 View 的上方和下方预渲染几行,以便它们可以在有限的影响下“滚动”。
关于compact-framework - 在 CF.NET 中创建大位图时出现 OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297697/