У меня есть .NET Core с SignalR, который принимает клиентские подключения. Для каждого соединения создается так называемый «планировщик», который хранится в словаре. Как только соединение закрыто, этот объект планировщика удаляется из списка.
Теперь для этих объектов планировщика я установил некоторые обработчики CollectionChanged для свойств объекта, например:
...
scheduler.Grades.CollectionChanged += (s, e) => this.GradesListener(s, e, connectionId);
scheduler.Raws.CollectionChanged += (s, e) => this.MaterialsListener(s, e, connectionId);
scheduler.Heats.CollectionChanged += (s, e) => this.HeatsListener(s, e, connectionId);
...
Поскольку существуетУтечка памяти в приложении. Мой вопрос: если я удаляю планировщик из Словаря (я делаю это с Dictionary.Remove(key)
), удаляются ли и слушатели событий? Я бы так подумал, потому что свойства (Grades, Raws, Heats ...) также будут удалены, верно?
Если обработчики не удаляются автоматически, как бы я "отменил регистрацию" их?
Дайте мне знать, если мне нужно предоставить больше кода.
Извините, если такой вопрос задавался ранее, я просто не смог найти ответ.