Нужно ли удалять обработчик статического класса?C#

Место общения программистов C#
Ответить
Anonymous
 Нужно ли удалять обработчик статического класса?

Сообщение Anonymous »


У меня есть серверное приложение Blazor, которое включает статический класс. Не думаю, что Blazor особенно важен, но упомянул об этом на всякий случай.

Мои компоненты используют методы этого класса для обработки событий...

защищенное переопределение асинхронной задачи OnInitializedAsync() { MyStaticClass.Event += данные => { // Делаем что-то с данными }; } Я не знаю, что произойдет, если компонент Blazor выйдет из строя. Подписка остаётся (вызывает утечку памяти) или нет?

Согласно документации Microsoft...

При использовании анонимных функций, методов или выражений нет необходимости реализовывать IDisposable и отменять подписку делегатов. Однако неспособность отказаться от подписки делегата является проблемой, когда объект, предоставляющий событие, переживает время жизни компонента, регистрирующего делегат. В этом случае возникает утечка памяти, поскольку зарегистрированный делегат сохраняет исходный объект живым.

Однако здесь указывается «объект, предоставляющий событие», что нормально, когда у вас есть объект, но в моем случае у меня статический класс, а не объект.

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

Может ли кто-нибудь мне это объяснить?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»