私はC#Classesとそのdeconstructorについて少し混乱しています。EventHandlersとC#クラスdestructor/Dispose
私はコンストラクタで取得していたクラスのインスタンスでは、いくつかのイベントハンドラを消費する必要があります。
public Foo(IFooHandler handler)
{
handler.Load += Load;
handler.Close += Close;
}
私はFooのクラスが破棄されると、そのイベントに解除する必要があります。私はIDisposable
を実装していますか?私はそれらのイベントを消費する必要があります、私は別の方法でそれを行うことはできません。
いずれかのクラスでは、インスタンスを作成し、進捗状況を確認してから、クラスインスタンスが範囲外になります。別のフォームの場合は、フォームが閉じられるまでMainForm
に残ります。最初は、それがまだそのイベントハンドラへの参照を持っている可能性があり、正しく行かないことがあるため、私が心配していることです。
私はメモリをリークしたくありません。いつどのように退会する必要がありますか?
Ah!アンマネージドコードを整理しない限り、私はIDisposableを実装すべきではないと思いましたか? –
IDisposableは他の理由で実装することができますが、管理されていないリソースのクリーニングに限定されるものではありません。 –
一般的な使い捨てパターンを見ると、管理対象リソースと管理対象外リソースを処理するパスがあります。ほとんどの場合、管理されていないリソースや管理対象のリソースしかありません。しかし、あなたのケースでは、きれいにすべき管理されたリソースを持つだけで大丈夫です。 – Oliver