我在Dispose Pattern和Dispose Implementation上阅读了这些文章。我的问题是从终结器调用虚拟dispose(bool)方法时,为什么我们只将false传递给方法并释放非托管资源?如果我们通过了,它会破坏什么?
即使我们已经实现了IDisposble接口,它仍然依赖开发人员将代码包装在中使用块或显式调用Dispose(),以便Dispose()方法被调用。如果开发人员不够谨慎,那么IDisposble接口的插件是什么?
答案 0 :(得分:1)
从您的第一个链接:
布尔参数disposing指示方法是否为 从IDisposable.Dispose实现或从 终结。 Dispose(bool)实现应该检查参数 在访问其他参考对象之前(例如,在中的资源字段) 前面的例子)。只有在访问时才能访问这些对象 从IDisposable.Dispose实现调用方法(当时 disposing参数等于true)。如果从中调用该方法 终结器(处理是假的),其他对象不应该 访问。 原因是对象在不可预测的情况下最终确定 他们或他们的任何依赖关系可能已经有了 已经最终确定。
希望这有帮助。