Мне всегда кажется чище отписываться от событий, даже в тех случаях, когда я знаю, что подписчики всегда переживают издателя (объект, вызывающий событие): событие больше никогда не будет инициировано, издатель больше недоступен и его можно собрать.
Затем снова , сколько людей потрудится отписаться от каждого обработчика события, например,приложение WinForms?Ссылки на объекты указывают издателю на подписчиков, а не наоборот, поэтому издателя можно собирать, пока подписчики живут.Он не представляет той же опасности, что и противоположная ситуация, когда долгоживущий издатель (например, статическое событие) может расточительно поддерживать потенциально крупных подписчиков живыми даже после того, как их можно было собрать.
Если вы хотите / должны отказаться от подписки, то требование отменить подписку того же делегата делает анонимные обработчики событий немного болезненными. Reactive Extensions решает эту проблему аккуратно: вместо того, чтобы запоминать делегата, на которого вы подписаны, подписка возвращает IDisposable
, который отписывается при утилизации.Перебрасывание всех ваших подписок в CompositeDisposable
позволяет вам отписаться от всего одним вызовом Dispose
.