I have a question about `cross links` in `.Net`.

As I know we should break up a cross link between objects if we want they are released by `GC`. So, sometimes there is a situation when I have an `object` with link to another `object` and that `object` has back link, but through an event. As i know if one object has a subscription to another, the second one has a link in its event in the target `object` property or in the `invocation` list for more than one subscription. 

Must I always decouple these objects by myself(realizing `Dispose method` for example) or there is an another way for this kind of situation in `.Net` or may be .Net clean event links by itself?