我想知道当对象被破坏时是否可以执行一些C#代码?
我尝试使用IDiposable
,但我的Dispose
方法未被调用。
感谢。
答案 0 :(得分:0)
您可以通过Garbage Collection Notification
执行此操作,这样您就可以在完整的垃圾收集时间和完整的garbage collection has completed
时感知并做出响应。
答案 1 :(得分:0)
如果一个对象使用终结器创建一个类型的实例,保持对该实例的引用,并且不向任何人公开该引用,那么当持有唯一引用的对象有资格进行收集时,后者的终结符对象将被排队以便在下一次机会中运行。请注意,垃圾收集器不运行终结器;它只是将可终结的对象添加到一个事物列表中,它们的终结器应该尽快运行。该列表中没有任何对象,或者它拥有直接或间接强引用的任何其他对象,在它不再在该列表上之前,将有资格收集。如果你的finalizable对象没有持有对它的引用的对象的引用,并且如果那个其他对象没有自己的终结器,那么一旦没有引用它就会停止存在;当后一个对象的终结器运行时,前一个对象将不再存在。