系统:Windows XP SP3,.NET 3.5,4GB RAM,双核1.6gHz
我有一个WPF应用程序,它加载并使用Storyboard动画过渡极大的PNG文件。这些PNG文件的分辨率为8190x1080。随着应用程序运行,它似乎会缓存图像并且系统内存逐渐增加。最终会导致系统崩溃并抛出OutOfMemoryException。
以下是我目前正在尝试解决此问题的步骤:
1)将BitmapSource对象从应用程序中移除
2)当我加载BitmapSource时,将BitmapSource BitmapCacheOption设置为None
3)一旦加载了BitmapSource,我就会将其Freezing。
4)删除所有对使用该源的图像以及对源本身的引用。
5)在完成上述步骤后手动调用GC.Collect()。
希望找出为什么WPF会挂起这些图像所需的内存,并找到一种可能的解决方案以确保正确回收用于加载它们的内存。
...
应该是什么的人,如果你正在尝试从本地磁盘加载图像,请尝试使用new FileStream(path, FileMode.Open)
。 - devuxer