Ich versuche herauszufinden, wie man einen WriteableBitmap-Speicher freigibt.WPF WriteableBitmap Speicherleck?
Im nächsten Abschnitt des Codes fülle ich den Backbuffer eines Writeablebitmap mit einer wirklich großen Datenmenge von „BigImage“ (3600 * 4800 Pixel, nur zum Testen) Wenn ich die Zeilen kommentieren, wo Bitmap und Bilder erreicht werden zu Null, der Speicher ist nicht freigegeben und die Anwendung verbraucht ~ 230 MB, sogar , wenn Bild und Bitmap nicht mehr verwendet werden!
Wie Sie am Ende des Codes sehen können, muss GC.Collect() aufgerufen werden, um den Speicher freizugeben.
Die Frage ist also, was ist der richtige Weg, um den Speicher freizugeben, der von einem WriteableBitmap-Objekt verwendet wird? Ist GC.Collect() der einzige Weg?
Jede Hilfe wäre großartig.
PS. Entschuldigung für mein schlechtes Englisch.
private void buttonTest_Click(object sender, RoutedEventArgs e)
{
Image image = new Image();
image.Source = new BitmapImage(new Uri("BigImage"));
WriteableBitmap bitmap = new WriteableBitmap(
(BitmapSource)image.Source);
bitmap.Lock();
// Bitmap processing
bitmap.Unlock();
image = null;
bitmap = null;
GC.Collect();
}
http://stackoverflow.com/questions/1534983/how-to-dispose-a-writeable-bitmap-wpf/2422496#2422496 – nyxtom