Запустите throguh visual tree и установите для всех изображений значение null.

Я видел тонны нитей с утечкой памяти при использовании изображений. Итак, будет ли хорошей идеей просто иметь общую функцию, своего рода GC, которая будет работать в NavigatingFrom, находить все изображения (даже в шаблонах виртуализированных списков) и устанавливать для них значение null?

1 ответ

Решение

Вот помощник для перебора всех изображений вашей страницы:

public IEnumerable<Image> GetAllImage(DependencyObject root)
    {
        var count = VisualTreeHelper.GetChildrenCount(parentElement);


        for (int i = 0; i < count; i++)
        {
            var child = VisualTreeHelper.GetChild(parentElement, i);
            if (child is Image)
            {
                yield return (Image)child;
            }
            foreach (var image in GetAllImage(child))
            {
                yield return image;
            }

        }
    }

Вы можете просто вызвать его с корнем вашей страницы в качестве параметра, и он должен вернуть вам все изображения.

Другие вопросы по тегам