Вам нужно отписаться от PropertyChanged? С#

avatar
rollsch
8 апреля 2018 в 07:08
776
0
1

Поскольку PropertyChanged (PropertyChangedEventHandler в C#) реализует шаблон слабого события. Требуется ли отписаться от него в подпрограмме Dispose, чтобы предотвратить утечку памяти/объект не может быть GCd?

Мое первое предположение состоит в том, что если это действительно слабый шаблон событий, то размещение вызова для удаления обработчика событий в подпрограмме Dispose может на самом деле означать, что вы предотвращаете объект с обработчиком событий PropertyChanged от GCd до тех пор, пока не будет вызван Dispose.

Таким образом, в случае события слабой ссылки отмена подписки на ваши события может на самом деле означать увеличение использования памяти и увеличение времени жизни объекта. Это правильно?

Источник
Zohar Peled
8 апреля 2018 в 07:19
1

Что заставляет вас думать, что PropertyChangedEventHandler реализует шаблон слабого события? Я не нашел никаких доказательств этого утверждения в официальной документации.

Richardissimo
8 апреля 2018 в 07:46
1

PropertyChanged — это событие на INotifyPropertyChanged. PropertyChangedEventHandler является делегатом. Ни один из них не связан со слабой реализацией событий. Возможно, вы используете PropertyChangedEventManager (не упоминается в вопросе). Просьба уточнить.

Hans Passant
8 апреля 2018 в 09:46
1

WPF использует шаблон слабого события, он не имеет ничего общего с событием PropertyChanged.

rollsch
8 апреля 2018 в 23:24
1

Да, я путал это с EventManager.

Ответы (0)