0

我有一个关于cross linksin的问题.Net

据我所知,如果我们希望它们被释放,我们应该打破对象之间的交叉链接GC。所以,有时会出现这样一种情况,即我有一个object指向另一个链接的链接,object并且object有一个反向链接,但是通过一个事件。据我所知,如果一个对象订阅了另一个对象,则第二个对象在其事件中的目标object属性或invocation列表中具有多个订阅的链接。

我必须总是自己解耦这些对象(Dispose method例如意识到),还是有另一种方法可以解决这种情况,.Net或者可能是.Net clean 事件链接本身?

4

2 回答 2

2

只有当您不再需要两者之一(比如A)时,您才需要删除对A 的所有引用。

这包括A上事件的任何事件处理程序。

如果A可以与引用它的对象同时被收集,则没有理由删除这些对象之间的引用。只需从需要保持“活动”的对象中删除对所有这些对象的所有引用,垃圾收集器就会看到所有这些对象不再可访问,并在需要时清除它们。

于 2012-08-14T05:46:06.747 回答
0

如果您不再需要获取事件,则应该取消订阅(-= 运算符)。在这种情况下,对象之间的这些类型的链接将被解耦。

于 2012-08-14T05:58:59.697 回答