Насколько серьезным может быть НЕ отписаться от событий в С#? Является ли это обязательным или целесообразным действием?
Необходимо ли отказаться от подписки на события?
Ответ 1
Это важная часть из документации MSDN, которую вы должны учитывать
Чтобы предотвратить использование обработчика событий вызывается, когда событие поднял, просто отменил подписку на мероприятие. Чтобы предотвратить использование ресурсов утечки, важно отказаться от подписки от событий до того, как вы избавитесь от абонентский объект. До тебя отказаться от подписки на мероприятие, многоадресный делегат, который лежит в основе событие в объекте публикации имеет ссылку на делегата, инкапсулирует событие подписчика обработчик. Пока публикация объект содержит эту ссылку, ваш объект-подписчик не будет мусором собраны.
Ответ 2
Это зависит от того, как долго живет абонент и издатель. Ниже приведена подробная статья о проблеме и несколько подходов к ее решению: Решение проблемы с событиями: слабые обработчики событий
Ответ 3
Важно отказаться от подписки на события. Если вы этого не сделаете, то абонент не сможет собрать мусор, что приведет к потере памяти. Вот хороший пример проблем, с которыми вы можете столкнуться, если не отказаться от подписки:
http://developers.slashdot.org/article.pl?sid=07/11/17/0552247
Кроме того, это может привести к проблемам с производительностью, поскольку обработчик событий будет продолжать вызываться, даже если он больше ничего не делает для вас полезным.
С другой стороны, если вы просто заканчиваете выполнение программы, то нет причин отказаться от подписки на события. Это, конечно, не обязательно, и я не вижу причин рекомендовать его.