Как устранить утечку памяти в WPF, вызванную DependencyProperty OverrideMetadata? - PullRequest
2 голосов
/ 31 января 2012

У меня есть приложение WPF. У меня есть кнопка, которая открывает модальное окно в нем, используя для этого ShowDialog () . Я обнаружил, что мое модальное окно является причиной утечки памяти, оно никогда не удаляется, и ему выделяется новый экземпляр. каждый раз.

После глубокого изучения кода и использования профилировщика ANTS я обнаружил, что причиной утечки являются следующие строки. Я использую пользовательские стили для моего приложения. Когда я удаляю стили из файла XAML, окно корректно удаляется.

Что не так в этом статическом конструкторе? это причина утечки.

   static StyleWindow()
{
   StyleProperty.OverrideMetadata(typeof(StyleWindow),new 
   FrameworkPropertyMetadata(Application.Current.FindResource(typeof(StyleWindow))));
} 

//StyleProperty definition
public static readonly DependencyProperty StyleProperty;

Большое спасибо, любая помощь и идеи приветствуются!

...