Подтвердить что ты не робот

Необходимо ли отказаться от подписки на события?

Насколько серьезным может быть НЕ отписаться от событий в С#? Является ли это обязательным или целесообразным действием?

4b9b3361

Ответ 1

Это важная часть из документации MSDN, которую вы должны учитывать

Чтобы предотвратить использование обработчика событий вызывается, когда событие поднял, просто отменил подписку на мероприятие. Чтобы предотвратить использование ресурсов утечки, важно отказаться от подписки от событий до того, как вы избавитесь от абонентский объект. До тебя отказаться от подписки на мероприятие, многоадресный делегат, который лежит в основе событие в объекте публикации имеет ссылку на делегата, инкапсулирует событие подписчика обработчик. Пока публикация объект содержит эту ссылку, ваш объект-подписчик не будет мусором собраны.

Ответ 3

Важно отказаться от подписки на события. Если вы этого не сделаете, то абонент не сможет собрать мусор, что приведет к потере памяти. Вот хороший пример проблем, с которыми вы можете столкнуться, если не отказаться от подписки:

http://developers.slashdot.org/article.pl?sid=07/11/17/0552247

Кроме того, это может привести к проблемам с производительностью, поскольку обработчик событий будет продолжать вызываться, даже если он больше ничего не делает для вас полезным.

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