0

我在使用图像时看到大量线程内存泄漏。那么,拥有一个通用功能,某种自己的 GC,它会在 NavigatingFrom 上运行,找到所有图像(甚至在虚拟化列表的模板中)并将它们设置为 null 是个好主意吗?

4

1 回答 1

2

这是一个遍历页面所有图像的助手:

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;
            }

        }
    }

您可以使用页面的根作为参数调用它,它应该将所有图像返回给您。

于 2013-09-19T17:08:42.280 回答