【发布时间】:2015-09-14 16:15:12
【问题描述】:
我正在开发一个 C# WPF 应用程序,它使用来自许多图像的像素数据来处理一个图像。
它将每个图像存储为 System.Drawing.Bitmap 并锁定在内存中。
用户可以打开任意数量的图像。
问题是,当用户打开这么多图像时,通常会发生什么,以至于在处理过程中内存会被填满?
在我的 Windows 8.1 计算机上,发生这种情况时,我在任务管理器中看到内存使用率越来越高,速度变慢,并冻结一分钟,然后应用程序退出。
但是,在我的 Windows 8.1(非 RT)平板电脑上,当这种情况发生时,我在任务管理器中看到内存使用率越来越高,然后突然变低,然后又变高,依此类推 2-3 次。 ..(这对我来说很奇怪,因为我认为所有图像都应该保存在内存中,只有在不再需要时才从内存中释放),速度正常,没有冻结,并且发生AccessViolationException。
所以我想知道这些行为是否正常,如果不是,什么是正常行为,为什么对我来说不正常?
【问题讨论】:
-
将所有图像加载到内存中通常不好。只需加载必须向用户显示的图像。相反,您必须保存图像的路径并在需要时加载图像。
标签: c# wpf memory bitmap access-violation