compact-framework – 在CF.NET中创建大型位图时的OutOfMemoryException

我的紧凑框架应用程序通过将所有项目渲染到大位图表面,然后将该位图复制到屏幕上的偏移位置,以便只显示相应的项目来创建平滑滚动列表.较旧的版本仅渲染当时应出现在屏幕上的项目,但这种方法对于平滑的滚动界面来说太慢了.

最初创建大位图时,它偶尔会生成OutOfMemoryException.如果用户执行设备的软重置并再次运行应用程序,则可以毫无问题地执行创建.

它看起来不像在程序存储器中生成这个位图,因为应用程序使用与新的平滑滚动方法之前大致相同的程序存储器量.

有什么方法可以防止这种异常吗?在抛出异常之前,有什么方法可以释放我需要的内存(无论它在哪里)?

最佳答案 我建议回到仅渲染部分数据的旧机制,因为完全渲染数据的大小显然是一个问题.为了帮助防止渲染问题,我可能会在当前视图的上方和下方预渲染几行,以便在影响有限的情况下“滚动”它们.

点赞