2010-05-04 12 views
1

I가에서 INotifyPropertyChanged를 구현 내에서는 CustomClass의 속성을 표시하는 DataTemplate을 사용하는 ItemsControl에 ... 아주 간단 메모리 누수

...

일부 항목에서 DataTemplate은 CommandBindings (예 : 단추)를 사용하고 일부는 코드 숨김 (yuck)을 가지고 있습니다.

ItemsControl을 비우고 모든 인스턴스를 customClass = Nothing으로 설정하면 내 프로그램에서 메모리가 해제되지 않습니다. 이것은 꽤 빨리 문제가됩니다!

어디서부터 살펴 봐야할까요? 심지어 지금까지 각 DataTemplate 인스턴스의 시각적 트리를 완전히 가로 질러 가서 각각을 설정하기까지했습니다. Visual = Nothing. 그래도 그게 효과가있는 것은 아닙니다.

답변

1

어디에서 모두 볼지는 확실하지 않지만 기본 이벤트 연결이 있는지 확인해야합니다.

이벤트 위임 추가 작업이있는 경우 제거해야합니다.

명령 바인딩이 문제인 경우 아무 것도 설정하지 않은 경우 명령 바인딩을 지우는 방법을 찾는 것이 좋습니다.

또한 누출의 원인을 정확히 찾아 낼 수있을 때까지 더 과감한 WeakReferences 등을 사용하기 시작합니다.

해피 헌팅!