mis*_*153 7 c# clr garbage-collection dispose finalizer
我一直在思考为什么我们建议,我们应该不释放里面的finalize管理资源.如果您在http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx上看到代码示例,并搜索字符串"Dispose(bool disposing)在两个不同的场景中执行"并阅读评论,你会明白我的意思.
我能想到的唯一可能性是,它可能与无法预测何时调用终结器的事实有关.有谁知道正确的答案?
谢谢,误导
Jon*_*eet 11
如果您正在从终结器中引用另一个对象,则不知道该对象是否已经完成 - 以及如果它已完成,它将如何表现.(我不知道当前的CLR是否运行多个终结器线程,但另一个可怕的可能性是它在终结器运行时正在完成.)
在终结器中你需要做的就是释放你直接拥有的非托管资源.如果你引用了其他管理类型的自己的资源,让他们做他们的工作在他们的终结.