2009-10-20 13 views
8

W jaki sposób należy pozbyć się BitmapSource?Właściwy sposób pozbycia się BitmapSource

// this wont work because BitmapSource doesnt implement IDisposable 
using(BitmapSource bitmap = new BitmapImage(new Uri("myimage.png"))) 
{ 
} 
+0

[Related] (https://stackoverflow.com/questions/8352787/how-to-free-the-memory-after-tbit-apimage-is-no-longer-ededed) – Goufalite

Odpowiedz

11

Nie musisz usuwać() a BitmapSource. W przeciwieństwie do innych klas "obrazów" w ramach programu, nie zawija żadnych zasobów natywnych.

Po prostu pozwól mu wyjść poza zakres, a śmieciarz zwolni jego pamięć.

+0

ok. Moi koledzy wspomnieli, że WPF jest w pełni przyspieszana przez dx, a obrazy itp. Są przechowywane w wideo. Czy to tylko fantazja? Jestem od dawna programistą WinForm i piszę teraz nowy moduł w WPF, więc założyłem, że muszę pozbyć się obrazów. –

+1

BitmapSource nie jest obrazem - służy do jego wygenerowania. Jest to jednak zarządzany nośnik pikseli. Trochę mylące, ale zawsze warto to sprawdzić. Na ogół wystarczy spojrzeć na hierarchię klas - jeśli nie implementuje ona IDisposable, możesz pozwolić GC martwić się zamiast Ciebie. :) –

+0

Z wyjątkiem tego, jeśli jest to WritableBitmap. –

Powiązane problemy