ContentPresenter.Content утечка памяти

Я работаю со следующими: VS 2010, .Net 4, WPF и .Net Memory Profiler версии 4.6.40.0 Pro. Все они работают на 64-битной Win7. Я использовал .Net Memory Profiler для отслеживания утечек памяти и нашел ту, которую я не понимаю, хотя, похоже, я ее исправил. У нас есть элемент управления, содержащий три объекта ContentPresenter. Если я установлю для свойства Content объектов ContentPresenter значение null в нашем методе Cleanup, тогда элемент управления вообще не протечет. Если я не обнулю свойства содержимого, мы получим большую утечку (около 3,5 МБ на каждый тест).

Результаты, которые я видел в поиске в Google, не помогли решить эту проблему напрямую. Документация по ContentPresenter мне тоже не помогла. Кто-нибудь здесь понимает, почему обнуление содержимого устранило утечку? Есть ли лучший способ добиться того же?

Замечу, что один из ContentPresenter динамически переключается между WindowsFormsHost и BitmapSource для решения проблем с воздушным пространством.

Обновление: вот соответствующие части очистки:

Во-первых, обнулите ContentPresenter's

AddressGridPlaceholder.Content = null;
AddressFormPlaceholder.Content = null;
MapControlPlaceholder.Content = null;

Затем очистите WindowsFormsHost

if (_hoster != null)
{
    _hoster.Child = null; // Remove the map control reference first
    _hoster.Dispose();    // Then Dispose
}

person Don Walker    schedule 12.08.2013    source источник
comment
Нам нужно увидеть метод очистки   -  person Gayot Fow    schedule 13.08.2013


Ответы (1)


Почему мне кажется, что вы не используете привязку к элементам управления? Не очень-то хорошо играть с этими вещами вручную.

person user853710    schedule 15.01.2015