0

我有三个班。1 类、2 类和 3 类。我有循环依赖(class1 到 class2,class2 到 class3,class3 到 class1)。在这种情况下,如何通过 dispose 方法或 finalize() 释放资源?

4

1 回答 1

2

当你IDisposable在一个对象上实现时,你也会做出所有权的决定。如果Class1有对您的引用,Class2则必须决定是Class1拥有Class2还是仅存储引用。If Class1owns Class2and Class2is IDisposablethenClass1也应该实现IDisposable并且Class1应该调用方法Dispose中的Class2引用Dispose,但仅在显式调用时 - 而不是在最终确定时。

因为IDisposable还定义了所有权层次结构,所以在处置时不能有循环依赖关系。当然Class1可以拥有Class2那个拥有Class3并且Class3可以有一个引用Class1但是因为Class3不拥有Class1它不应该在处理时调用Dispose引用。

在终结期间,实现的类IDisposable应该只释放非托管资源而不调用Dispose它拥有的类,因为这些实例可能已经被垃圾收集器终结。

于 2013-07-01T07:35:56.850 回答