.NET:有什么方法可以告诉对象何时处理/垃圾收集?

Geo*_*uer 7 .net garbage-collection

给定一个对象,是否有任何方法可以获知该对象何时被垃圾回收?

我正在玩C#扩展方法的行为更像mixins(特别是在添加日志记录时).所以基本上每个对象都获得一个新的Logger()方法,该方法返回一个ILog,它根据扩展方法的目标对象创建和缓存.

工作相当膨胀,唯一的问题显然是在一个物体消失之后它的记录器可能会停留很长一段时间.我当然可以设置一些周期性机制来扫描记录器缓存并清除它但我宁愿设置一些垃圾收集通知,这样我就可以了解系统何时不再使用我的对象.

有人知道这样做的方法吗?

Dav*_*kle 11

我认为这里通常做的是你维护一个WeakReferences列表.使用弱引用,您可以通过检查IsAlive属性来判断您所引用的对象是否已被垃圾收集.