Wie stellen Sie sicher, dass WPF große BitmapSource aus dem Speicher freigibt?

System: Windows XP SP3, .NET 3.5, 4 GB RAM, Dual 1,6 GHz

Ich habe eine WPF-Anwendung, die extrem große PNGs lädt und übergeht (unter Verwendung von Storyboard-Animationen). Diese PNGs haben eine Auflösung von 8190 x 1080. Während die Anwendung ausgeführt wird, scheinen die Bilder zwischengespeichert zu werden, und der Systemspeicher steigt langsam an. Schließlich drosselt es das System und löst die OutOfMemoryException aus.

Hier sind die Schritte, die ich derzeit unternehme, um dies zu lösen:

1) Ich entferne die BitmapSource-Objekte aus der App

2) Ich setze die BitmapSource BitmapCacheOption auf None, wenn ich die BitmapSource lade

3) Ich friere die BitmapSource ein, sobald sie geladen ist.

4) Ich lösche alle Verweise auf das Bild, das die Quelle verwendet, sowie alle Verweise auf die Quelle selbst.

5) Rufen Sie GC.Collect () manuell auf, nachdem die obigen Schritte ausgeführt wurden.

In der Hoffnung herauszufinden, warum WPF den Speicher für diese Bilder in Anspruch nimmt, und eine mögliche Lösung, um sicherzustellen, dass der zum Laden dieser Bilder verwendete Speicher ordnungsgemäß wiederhergestellt wird.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage