.NET: Какой-либо способ сказать, когда объект расположен/собран "мусор"?

Учитывая объект, там какой-либо путь, который будет уведомлен относительно того, когда тот объект собран "мусор"?

Я играю вокруг с наличием методов расширения C#, ведут себя немного больше как mixins (конкретно в добавлении входа). Таким образом, в основном каждый объект получает новый Регистратор () метод, который возвращает ILog, который создается и кэшируется в зависимости от объекта, который является целью дополнительного метода.

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

Кто-либо знает о способе сделать это?

7
задан George Mauer 30 March 2010 в 17:01
поделиться

2 ответа

Я думаю, что обычно здесь делается то, что вы ведете список WeakReferences . С помощью слабой ссылки вы можете определить, был ли объект, на который вы ссылаетесь, был собран сборщиком мусора, проверив свойство IsAlive .

11
ответ дан 6 December 2019 в 14:02
поделиться

Деструктор вызывается во время сборки мусора.

1
ответ дан 6 December 2019 в 14:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: