| 

.NET C# Java Javascript Exception

3
Ich habe eine ListBox mit hunderten Einträgen. Bei jedem Eintrag befindet sich zwei Bilder plus andere Properties. Ein Bild wird von eingebetteten Resourcen geladen, das andere wird über ein byte[] geladen. Das Binding der View wird über ein ViewModel realisiert.

im ersten Fall: ImageSource wird an eine URI gebunden
im zweiten Fall: ImageSource wird an ein byte[] gebunden

Im Prinzip funktioniert das ganze, aber das Problem ist, dass für jedes Image ein Objekt instanziert wird, obwohl sehr viele Einträge die selben Images verwenden.
Wie kann ich so etwas optimieren? Gibt es hier eine Best Practice wie man eine Art Caching der Images durchführt? Genügt es wenn ich mir eine ImageSource pro Bild aufbewahre (z.b. als Property einer Statischen Klasse), werden dann von WPF weniger Images instanziert?

Etwas was ich auch nicht verstanden habe ist das Freeze eines Bitmaps.
News:
07.04.2011
GerhardK 398 1 7
1 Antwort
1
Also zuerst würde ich dir empfehlen von jedem Bild ein "globales" ImageSource für deine Einträge zu erstellen, dieses musst du dann auch, wie du schon richtig erwähnt hast, "Freezen".

Die Methode Freeze() bewirkt, dass das Objekt nicht modifiziert werden kann. Was in deinem Fall bedeutet, das wenn du die Einträge wieder entfernst, er ohne Probleme auch die Referenzen zu dem Bild "loslassen" kann. Damit wirkst du einem MemoryLeak entgegen :-)
08.04.2011
Konstantin 3,7k 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH