Нужно ли вручную удалять все события, чтобы мой объект удалялся из памяти? - PullRequest
3 голосов
/ 13 января 2010

Я прочитал в MSDN , который требуется для отмены подписки на все события, которые объект должен иметь возможность удалять из памяти. Я всегда использовал - =, чтобы удалить все ссылки на события внутри моего объекта (например, MSDN show).

Теперь мне нужно сохранить код, и в нем есть утечка памяти. Я вижу, что предыдущий разработчик просто установил объект, на который подписаны все события, на NULL и не - = каждый метод события.

Пример:

_watcher.Changed += new ...
_watcher.Created += new ...
_watcher.Deleted += ..

//later.

_watcher = NULL;

Это хороший способ или он хранит переменную в памяти?

1 Ответ

6 голосов
/ 13 января 2010

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

По привычке я склонен явно удалять обработчики событий.

...