Как избавиться от кеша 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 функция, но это не очистило это.

Как правильно очистить память при выгрузке?

Ответы на вопрос(1)

Ваш ответ на вопрос