0

について質問がcross linksあり.Netます。

私が知っているように、オブジェクトをによって解放したい場合は、オブジェクト間のクロスリンクを分割する必要がありGCます。ですから、私がobject別のリンクを持っていてobject、それobjectがバックリンクを持っているという状況が時々ありますが、それはイベントを通してです。あるオブジェクトに別のオブジェクトへのサブスクリプションがあるかどうかはわかっていますが、2番目のオブジェクトには、そのイベントのターゲットobjectプロパティまたはinvocation複数のサブスクリプションのリストにリンクがあります。

これらのオブジェクトを常に自分で切り離す必要がありますか(Dispose methodたとえば、実現)、.Netまたは.Netクリーンイベントリンク自体でこの種の状況を解決する別の方法がありますか?

4

2 に答える 2

2

両方のいずれか(たとえばA )が不要になった場合にのみ、 Aへのすべての参照を削除する必要があります。

これには、Aのイベントのイベントハンドラーが含まれます。

Aを参照するオブジェクトと同時に収集できる場合、これらのオブジェクト間の参照を削除する理由はありません。「生きている」必要のあるオブジェクトからこれらすべてのオブジェクトへのすべての参照を削除するだけで、ガベージコレクターは、これらすべてのオブジェクトに到達できなくなったことを確認し、必要に応じてそれらをクリアします。

于 2012-08-14T05:46:06.747 に答える
0

もう取得する必要がない場合は、イベントの購読を解除する必要があります(-=演算子)。この場合、オブジェクト間のこれらの種類のリンクは分離されます。

于 2012-08-14T05:58:59.697 に答える