System: Windows XP SP3, .NET 3.5, 4GB RAM, Dual 1.6gHzWie stellen Sie sicher, dass WPF große BitmapSource aus dem Speicher freigibt?
Ich habe eine WPF-Anwendung, die extrem große PNGs lädt und übergänge (mit Storyboard-Animationen). Diese PNGs haben eine Auflösung von 8190x1080. Während die Anwendung läuft, scheint es die Bilder zu cachen und der Speicher des Systems schleicht sich langsam nach oben. Schließlich erstickt es das System und löst die OutOfMemoryException aus.
Hier sind die Schritte, die ich zur Zeit versuchen, nehme dieses Problem zu lösen:
1) Ich Entfernen aus der App die Bitmap Objekte
2) Ich habe die Bitmap BitmapCacheOption auf Keine setze, wenn ich laden Die BitmapSource
3) Ich friere die BitmapSource ein, sobald sie geladen ist.
4) Ich lösche alle Verweise auf das Bild, das die Quelle sowie alle Verweise auf die Quelle selbst verwendet.
5) Manuelle Aufrufen von GC.Collect(), nachdem die obigen Schritte abgeschlossen wurden.
In der Hoffnung, herauszufinden, warum WPF auf Speicher für diese Bilder hängt und eine mögliche Lösung, um sicherzustellen, dass der Speicher zum Laden sie ordnungsgemäß wiederhergestellt wird.
BitmapSource source = new BitmapSource() wird nicht kompiliert und ich bin mir nicht sicher warum. Übergibt diesen Fehler: Fehler Kann keine Instanz der abstrakten Klasse oder Schnittstelle 'System.Windows.Media.Imaging.BitmapSource' – discorax
Ahh..it kompiliert, wenn ich BitmapImage anstelle von BitmapSource verwenden. Nun, wie wird das Probleme verursachen? :) – discorax
Dieser Ansatz sieht bisher vielversprechend aus. Ich werde weiter testen. – discorax