Я начну с описания проблемы, касающейся событий и сильных ссылок.Скопировано из здесь
Часто бывает, что "субъект" (объект с событием) имеет более длительное время жизни, чем "наблюдатель" (объект, который подписывается насобытие).Когда мы больше не используем наблюдателя, нам бы хотелось, чтобы он собирал мусор;однако, если наблюдатель все еще подписан на событие на субъекте, связанный обработчик события содержит строгую ссылку на наблюдателя, поэтому наблюдатель не будет собирать мусор, пока субъект также не станет мусором или пока наблюдатель не откажется от подписки.
Столкнувшись с этой проблемой, я пошел искать решения.Я прочитал статью Слабые шаблоны событий из MSDN и несколько раз использовал этот шаблон.Это чувствовало себя раздутым.Я искал что-то лучшее и наткнулся на эти две записи в блоге:
Это делает вещи намного проще.Итак, теперь, когда у меня есть простой способ использовать слабые подписки на события, я начинаю задумываться, когда мне следует использовать слабое событие?Оказывается, я не могу придумать причину , а не , чтобы использовать слабые события.
Мой вопрос таков: когда бы вы захотели , чтобы субъект держал сильную ссылку наслушатель?В каком дизайне было бы логично / желательно, чтобы субъект был единственным, кто поддерживал жизнь слушателя.Если слушатель выполняет определенные задачи в вашем приложении, не всегда ли существует «нормальная» ссылка на него?
Я смотрю на это через очки WPF и особенно заинтересован в WPFиспользует сильные ссылки.Но ответы, не относящиеся к WPF, также приветствуются, хотя бы только для того, чтобы быть в курсе этих применений.