2011-10-25 3 views
7

짧은 이야기를 짧게 만들려면 ... 이것은 대형 WPF 프로젝트에 있습니다.PropertyChangedEventManager는 언제 만들어지며 언제 첨부됩니까?

나는 INotifyPropertyChanged을 구현하는 "환자"클래스가 있습니다. 이 클래스를 처리 할 때 PropertyChangedEventHandler이 null인지 확인하고 리디렉션자를 기록하는 ListenerDetector 클래스로 실행하지 않으면 누출을 추적하여 누출을 정리할 수 있습니다. Patient에는 WPF 요소뿐만 아니라 PropertyChanged을 사용하여 변경을 모니터링하는 다른 개체에 바인딩 된 일부 속성이 있습니다. System.ComponentModel.PropertyChangedEventManager

질문 - : 가있다

로그 : 환자가 여전히 부착 된 다음 리스너 (들)이 다음과 같이

다른 모든 것들을 배치 한 후, 내 로그 결과는 PropertyChangedEventManager가 생성 되었습니까? 환자는

  • 을 만들 때

    • 는 WPF는 환자 특성
    • 일부 다른 지점에 결합합니다. Patient.PropertyChangedEventHandler 만약

    null로 설정 따라서 관리자를 다시하고 다시 Patient.PropertyChangedEventHandler을들을 가지고 어떤 방법이있는 PropertyChangedEventManager 연결되어 있지? 왜 이런 일이 일어나는지 물어 보지 마세요 .--(

  • 답변

    7

    PropertyChangedEventManagerINotifyPropertyChanged을 구현하는 모든 클래스에 대한 바인딩을 지원하기 위해 WPF에 의해 만들어지며, 당신이 INotifyPropertyChanged를 구현 클래스에 바인딩 마자. 여전히 부착 된 수신기를 보여주는 것 동안

    말했다되고 그건

    에서, WeakEventManager 패턴의 구현이.이 리스너가 Weak Event Pattern를 사용하여 연결되어 있는지 알고 있습니다.이 갈 것입니다 약한 레퍼런스를 사용하여 구독을 유지하기 때문에 전체 가비지 수집이 발생하면 즉시이 특정 구독을 삭제해야합니다. (장기간) 메모리 누출의 원인이 될 수 있습니다.

    관련 문제