Как избавиться от кеша BitmapImage?
Я столкнулся с проблемой утечки памяти. Утечка происходит отсюда:
public static BitmapSource BitmapImageFromFile(string filepath)
{
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.CacheOption = BitmapCacheOption.OnLoad; //here
bi.CreateOptions = BitmapCreateOptions.IgnoreImageCache; //and here
bi.UriSource = new Uri(filepath, UriKind.RelativeOrAbsolute);
bi.EndInit();
return bi;
}
у меня естьScatterViewItem
, который содержитImage
и источником являетсяBitmapImage
этой функции.
Реальная вещь намного сложнее, поэтому я не могу просто вставить в нее изображение. Я также не могу использовать параметры загрузки по умолчанию, поскольку файл изображения может быть удален и, следовательно, столкнется с некоторой проблемой с правами доступа к файлу во время удаления.
Проблема возникает, когда я закрываюScatterViewItem
который в свою очередь закрываетImage
, Однако кэшированная память не очищается. Таким образом, после многих циклов потребление памяти довольно большое.
Я пробовал настройкуimage.Source=null
в течениеUnloaded
функция, но это не очистило это.
Как правильно очистить память при выгрузке?