2016-11-10 12 views
-1

私は、他のオブジェクト、creditCardオブジェクトを初期化し、creditCardが発生しているイベントに登録するビューオブジェクトを持っています。ビューオブジェクトに参照がない場合。それはゴミ収集されますか?またはそれが起こるために私は退会する必要がありますか?イベントに登録されたオブジェクトのガベージコレクション

+0

ビューオブジェクトにのみ関連しません。 'creditCard'はあなたのプログラムのどこにでも参照する必要はありません。 –

+0

https://stackoverflow.com/questions/5103675/garbage-collection-and-local-variables-to-whose-events-a-control -has-subscribed、https://stackoverflow.com/questions/11507632/net-object-events-and-dispose-gc、https://stackoverflow.com/questions/10853300/in-c-do-events-keep - コールバックメソッド全体のクラス参照、https://stackoverflow.com/questions/13372479/will-this-event-handler-code-cause-a-memory -leak、https://stackoverflow.com/questions/14428402/why-this-does-not-cause-a-memory-leak-when-event-is-not-unsubscribed、... –

+0

...およびhttps ://stackoverflow.com/questions/15370527/garbage-collection-of-unreferenced-object-with-live-event-handler –

答えて

0

ガベージコレクションするオブジェクトの登録を解除する必要があります。

"原因は簡単です:イベントハンドラが購読されている間、イベントの発行者は、イベントハンドラデリゲート(デリゲートがインスタンスメソッドであると仮定)を介してサブスクライバへの参照を保持します。- https://stackoverflow.com/a/4526840/283787

0

creditCardオブジェクトがイベントtiにサブスクライブすると、ビューオブジェクトが参照されます。たとえばcreditCard.Event += MyEvent...とこれはcreditCard.Event += this.MyEvent...に相当します。thisviewオブジェクトを参照するため、ガベージコレクションのために登録を解除する必要があります。

関連する問題