1

Winform に IDisposable を実装するためのベスト プラクティスは何ですか?

  • System.Windows.Forms.Form を拡張するダイアログがあります
  • 生成された designer.cs には、仮想 Dispose(bool) メソッドの実装が既に含まれています。
  • 私のフォームには、IDisposable を実装する手動で追加されたフィールドがあります

生成されたコードで Dispos(bool) オーバーライドにフックして、手動で追加した IDisposable オブジェクトを破棄できることが理想的です。これを適切に行う方法に関する推奨事項はありますか?

ありがとう。

スコット

4

3 に答える 3

5

その Dispose 実装を .designer.cs から .cs に移動できます。

于 2009-01-16T16:01:27.550 に答える
2

ただし、フィールドはコンポーネントである必要があります (IComponent インターフェイスなどを実装します)。それは少しやり過ぎではありませんか?

イベントハンドラを Disposing イベントにアタッチして、そのイベントハンドラでフィールドを破棄できますか?

(または、それらを Dispose メソッドに追加するだけです。Dispose メソッドのコードは再生成されないため、問題にはならないと思います...理想的には、Dispose メソッドの実装は * .designer.cs クラス ... )。

于 2009-01-16T15:05:25.650 に答える
1

フォームの designer.cs にある Dispose メソッドのイベントをすべて登録解除します。

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
        base.Dispose(disposing);
    }
于 2012-11-02T14:28:44.703 に答える