Ho un ListBox con un mucchio di immagini (fatto attraverso un datatemplate). Le immagini sono create impostando la fonte voci:Smaltire l'immagine in WPF in Listbox (perdita di memoria)
<Image x:Name="ItemImage" Source="{Binding ImageUrl}"/>
e poi vengono cancellati utilizzando il metodo Items.Clear() della casella di riepilogo. Le nuove immagini vengono aggiunte utilizzando il metodo Items.Add della listbox.
Tuttavia, l'utilizzo della memoria inizia appena a salire e salire e salire. Sono le stesse 300 o meno piccole immagini che vengono visualizzate, ma la memoria non sembra mai essere liberata. L'app inizia a utilizzare circa 40Megs e sale rapidamente fino a 700Megs. Come liberare la memoria che tutte queste immagini stanno utilizzando?
EDIT: Una cosa che ho dimenticato di menzionare, le immagini (che sono circa 4-5k ciascuna in dimensioni) vengono caricate in rete. Il caching è in qualche modo responsabile di questo? Visualizzazione di 12 immagini mastica circa 10 Meg di memoria, che è circa 100X di dimensione.
O meglio ancora: utilizza l'anteprima incorporata se ne esiste una in modo da non aver nemmeno bisogno di leggere l'intero file e ridimensionarlo ... Lookup BitmapFrame.Thumbnail –
@xyzzer: Buono a sapersi. –
Il problema che ho visto è che spesso questi sono dotati di fotogrammi neri o bianchi come parte dell'anteprima, il che non è sempre eccezionale, suppongo che sia per questo che la maggior parte dei browser di immagini sembra creare i propri archivi di miniature. –