メモリ リークの可能性を修正するために、その背後にある歴史を以下に示します。VB 6.0 または VC 6.0 のテキスト エディター コントロールを .NET でも使用する必要がありました。したがって、このコントロールのアセンブリでは、このテキスト エディターへの Interop 参照が見られます。次に、.NET カスタム コントロールを作成し、そのテキスト エディターをそこにドロップして、それを必要とするプロジェクトで使用しています。
したがって、Designer.cs ファイルには、次のような変数が表示されます。
private AxTextEditorLib.AxTextEditor ctlTEEditor;
そして、次のようなパブリック プロパティ:
[Obsolete("This accessor method was added as a convenience for migrating to this component. Remove at earliest convenience.")]
[Browsable(false)]
public AxTextEditor TextEditor
{
get
{
return ctlTEEditor;
}
}
.NET デザイナ自体は、次のように、このための標準の破棄メソッドを生成しています。
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
しかし、それで十分ですか?より多くのメモリ処理が必要ですか? Marshal.ReleaseObjects などを使用する必要がありますか? イベント ハンドラーを手動で解放する必要がありますか?