J'ai un ListBox avec un tas d'images dedans (fait à travers un datatemplate). Les images sont créées en définissant la source des éléments:Disposer de l'image dans WPF dans Listbox (fuite de mémoire)
<Image x:Name="ItemImage" Source="{Binding ImageUrl}"/>
puis ils sont effacés en utilisant la méthode Items.Clear() de la zone de liste. Les nouvelles images sont ajoutées en utilisant la méthode Items.Add de la zone de liste.
Cependant, l'utilisation de la mémoire commence à monter et à monter. Ce sont les mêmes 300 petites images qui sont affichées, mais la mémoire ne semble jamais être libérée. L'application commence à utiliser environ 40Megs, et grimpe rapidement jusqu'à 700Megs. Comment puis-je libérer la mémoire que toutes ces images utilisent?
EDIT: Une chose que j'ai oublié de mentionner, les images (qui font environ 4-5k de taille) sont en cours de chargement sur le réseau. La mise en cache est-elle en quelque sorte responsable de cela? Affichage 12 images mâche environ 10 Megs de mémoire, ce qui est d'environ 100X taille de fichier.
Ou mieux encore - utiliser la miniature intégrée si l'on existe si vous ne devez même pas lire le fichier entier et redimensionner ... Recherche BitmapFrame.Thumbnail –
@xyzzer: Bon à savoir. –
Le problème que j'ai vu est que ceux-ci viennent souvent avec des cadres noirs ou blancs dans la vignette, ce qui n'est pas toujours génial, je suppose que c'est pourquoi la plupart des navigateurs semblent construire leurs propres vignettes. –