我有三个班。1 类、2 类和 3 类。我有循环依赖(class1 到 class2,class2 到 class3,class3 到 class1)。在这种情况下,如何通过 dispose 方法或 finalize() 释放资源?
问问题
31 次
1 回答
2
当你IDisposable
在一个对象上实现时,你也会做出所有权的决定。如果Class1
有对您的引用,Class2
则必须决定是Class1
拥有Class2
还是仅存储引用。If Class1
owns Class2
and Class2
is IDisposable
thenClass1
也应该实现IDisposable
并且Class1
应该调用方法Dispose
中的Class2
引用Dispose
,但仅在显式调用时 - 而不是在最终确定时。
因为IDisposable
还定义了所有权层次结构,所以在处置时不能有循环依赖关系。当然Class1
可以拥有Class2
那个拥有Class3
并且Class3
可以有一个引用Class1
但是因为Class3
不拥有Class1
它不应该在处理时调用Dispose
引用。
在终结期间,实现的类IDisposable
应该只释放非托管资源而不调用Dispose
它拥有的类,因为这些实例可能已经被垃圾收集器终结。
于 2013-07-01T07:35:56.850 回答