Для конкретного вопроса «Будет ли Pclass быть мусора»: подписка на события не оказывает никакого влияния на сбор Pclass (как издателя).
Для GC в целом (в частности, цель): зависит от того, является ли MyFunction статическим или основанным на экземпляре.
Делегат (например, подписка на события) к методу экземпляра включает ссылку на экземпляр. Так что да, подписка на события предотвратит GC. Однако, как только объект публикации события (pClass выше) имеет право на сбор, это перестает быть проблемой.
Обратите внимание: это односторонний; то есть, если мы имеем:
publisher.SomeEvent += target.SomeHandler;
затем «издатель» будет держать «цель» живой, но «цель» не будет держать «издатель» жив.
Так что нет: если pClass собирается собираться в любом случае, нет необходимости отписывать слушателей. Однако, если pClass долговечен (дольше, чем экземпляр с MyFunction), то pClass может сохранить этот экземпляр живым, так что будет, чтобы отказаться от подписки, если вы хотите, чтобы цель была собрана.
Статические события, однако по этой причине очень опасны при использовании с обработчиками на основе экземпляров.
Я собираюсь в предварительном порядке предложить читателям, интересующимся этим вопросом, что, возможно, стоит ознакомиться с легкими событиями/слабыми шаблонами событий, которые НЕ предотвращают сбор мусора. Хороший SO-бутстрап в эту тему http://stackoverflow.com/questions/185931/weakreference-and-event-handling – fostandy 2010-05-13 06:36:49
Примечание для потомков: установка ссылки на null просто задерживает сборщик мусора, расширяя на одну строку объем ссылка. .NET не VB6. – 2011-12-13 03:51:12