Я только понял, прочитав несколько вопросов и ответов на StackOverflow, что добавление обработчиков событий с использованием +=
в С# (или, я думаю, других языков .net) может вызвать общие утечки памяти...
Я использовал обработчики событий как это в прошлом много раз и никогда не понимал, что они могут вызвать или вызвать утечку памяти в моих приложениях.
Как это работает (что означает, почему это действительно вызывает утечку памяти)?
Как я могу исправить эту проблему? Использует ли -=
для одного обработчика событий?
Существуют ли общие шаблоны проектирования или лучшие практики для обработки подобных ситуаций?
Пример. Как я должен обрабатывать приложение с множеством разных потоков, используя множество разных обработчиков событий для создания нескольких событий в пользовательском интерфейсе?
Есть ли какие-либо хорошие и простые способы эффективно отслеживать это в уже построенном большом приложении?