为了修复可能的内存泄漏,这里是它背后的历史: 有一个 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 设计器本身已经为此生成了标准的 dispose 方法,如下所示:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
但这足够了吗?我需要更多的内存处理吗?我需要使用 Marshal.ReleaseObjects 或类似的东西吗?我需要手动释放事件处理程序吗?