Sistema: Windows XP SP3, .NET 3.5, 4GB RAM, Dual 1.6gHz¿Cómo se asegura de que WPF libere BitmapSource de memoria?
Tengo una aplicación WPF que carga y transiciones (usando animaciones Storyboard) PNGs extremadamente grandes. Estos PNG tienen una resolución de 8190x1080. A medida que la aplicación se ejecuta, parece que almacena en caché las imágenes y la memoria del sistema avanza lentamente. Eventualmente, estrangula el sistema y lanza OutOfMemoryException.
Estos son los pasos que estoy tomando para tratar de resolver esto:
1) Estoy quitando los objetos BitmapSource desde la aplicación
2) Estoy configurando el BitmapSource BitmapCacheOption en Ninguno cuando cargo la BitmapSource
3) estoy congelando la BitmapSource una vez que se ha cargado.
4) Estoy suprimiendo todas las referencias a la imagen que utiliza la fuente, así como cualquier referencia a la propia fuente.
5) llamando manualmente GC.Collect() después de los pasos anteriores se han completado.
Con la esperanza de averiguar por qué WPF está colgando en la memoria de estas imágenes y una posible solución para garantizar que la memoria utilizada para cargarlos se recupera correctamente.
BitmapSource source = new BitmapSource() no se compilará y no estoy seguro de por qué. Lanza este error: Error No se puede crear una instancia de la clase o interfaz abstracta 'System.Windows.Media.Imaging.BitmapSource' – discorax
Ahh .. se compila cuando uso BitmapImage en lugar de BitmapSource. Ahora, ¿cómo puede causar problemas? :) – discorax
Este enfoque parece prometedor hasta ahora. Continuaré probando. – discorax