Jak upewnić się, że WPF wypuszcza duże źródło bitmapSource z pamięci?

System: Windows XP SP3, .NET 3.5, 4 GB RAM, Dual 1.6 gHz

Mam aplikację WPF, która ładuje i przechodzi (za pomocą animacji Storyboard) bardzo duże PNG. Te PNG mają rozdzielczość 8190x1080. Po uruchomieniu aplikacji wydaje się buforować obrazy, a pamięć systemowa powoli wkrada się. W końcu dusi system i zgłasza wyjątek OutOfMemoryException.

Oto kroki, które obecnie podejmuję, aby rozwiązać ten problem:

1) Usuwam obiekty BitmapSource z aplikacji

2) Ustawiam BitmapSource BitmapCacheOption na None, gdy ładuję BitmapSource

3) Zamrażam źródło BitmapSource po jego załadowaniu.

4) Usuwam wszystkie odniesienia do obrazu, który używa źródła, jak również wszelkie odniesienia do samego źródła.

5) Ręczne wywołanie GC.Collect () po wykonaniu powyższych kroków.

Mając nadzieję, że dowiemy się, dlaczego WPF jest w pamięci dla tych obrazów, i możliwe rozwiązanie zapewniające prawidłowe odzyskanie pamięci używanej do ich załadowania.

questionAnswers(1)

yourAnswerToTheQuestion