Пытаюсь понять, как освободить память WriteableBitmap.
В следующем разделе кода я заполняю задний буфер WriteableBitmap действительно большим объемом данных из «BigImage» (3600 * 4800 пикселей, только для тестирования). Если я прокомментирую строки, в которых растровое изображение и изображение равны нулю, память это не релиз, и приложение потребляет ~ 230 МБ, даже если изображение и растровое изображение больше не используются!
Как вы можете видеть в конце кода, необходимо вызвать GC.Collect (), чтобы освободить память.
Итак, вопрос в том, как правильно освободить память, используемую объектом WriteableBitmap? GC.Collect () - единственный способ?
Любая помощь была бы замечательной.
PS. Извините за мой плохой английский.
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();
}