Здравствуйте, America, Вы писали:
A>Вопрос: Когда я все ссылки на объект UsingSettings удаляются, удалит ли его GC, ведь ссылка в списке обработчиков собития SowColumnsChanged ссылка на данный класс поидее остаётся?
Вы сами ответили на свой вопрос.
A>В деструктор соответственно отписки от событий тоже н езапишеш.
Финализаор не будет вызван, т.к. на объект есть ссылки.
A>Делал тестовую программу где создавал много объектов, и отписывался от событий с помощью специального метода, но GC всёравно ничего не собирал, даже если написать GC.Collect(). К тому-же в этом случае теряется приемущество автоматической сборки мусора(надо в точках где завершается использование объекта ставить код отписывания от событий). Как правильно поступить в такой ситуации(желательно чтоб отписывание от событий было автоматическое, если это возможно).
Можно замутить специальный легковесный объект-прокси, который будет держать WeakReference-ссылку на UsingSettings и переадресовывать все вызовы. Или, если есть возможность, переопределить add/remove методы события ShowColumnsChanged и хранить WeakReference-ы на обработчики.