Поскольку PropertyChanged (PropertyChangedEventHandler в C#) реализует шаблон слабого события. Требуется ли отписаться от него в подпрограмме Dispose, чтобы предотвратить утечку памяти/объект не может быть GCd?
Мое первое предположение состоит в том, что если это действительно слабый шаблон событий, то размещение вызова для удаления обработчика событий в подпрограмме Dispose может на самом деле означать, что вы предотвращаете объект с обработчиком событий PropertyChanged от GCd до тех пор, пока не будет вызван Dispose.
Таким образом, в случае события слабой ссылки отмена подписки на ваши события может на самом деле означать увеличение использования памяти и увеличение времени жизни объекта. Это правильно?
Что заставляет вас думать, что
PropertyChangedEventHandler
реализует шаблон слабого события? Я не нашел никаких доказательств этого утверждения в официальной документации.PropertyChanged
— это событие наINotifyPropertyChanged
.PropertyChangedEventHandler
является делегатом. Ни один из них не связан со слабой реализацией событий. Возможно, вы используетеPropertyChangedEventManager
(не упоминается в вопросе). Просьба уточнить.WPF использует шаблон слабого события, он не имеет ничего общего с событием PropertyChanged.
Да, я путал это с EventManager.