Утечка памяти при отмене подписки из-за исключительной ситуации - PullRequest
0 голосов
/ 21 января 2012

Я не хотел просматривать все сообщения об утечке памяти, связанные с утечкой памяти о событиях, чтобы выяснить, не связаны ли они с исключениями, поэтому я делаю новое сообщение.

Если я зарегистрирую функцию с событием, и перед отменой регистрации произойдет исключение, это вызовет утечку памяти? Я имею попытку / поймать в вызывающей функции, но не в функции, где я соединяю / разрываю событие, и предпочел бы не иметь попытку / поймать, если мне это не нужно.

1 Ответ

1 голос
/ 21 января 2012

При большинстве методов подписки подписчик события, который не отписывается, продлевает свой срок жизни до источника события. Если источник события недолговечный, это не будет проблемой. Если источник события является долгоживущим, это может быть огромной проблемой. Лучшая идиома - это, как правило, связывать события в IDisposable. Если используется блок «using», вызывается метод Dispose, гарантирующий отписку от событий.

...