在Winform上实现IDisposable的最佳做法是什么?
理想情况下,我可以在生成的代码中挂钩Dispos(bool)覆盖来处理手动添加的IDisposable对象。有关如何正确执行此操作的任何建议吗?
感谢。
斯科特
答案 0 :(得分:5)
您可以将Dispose实现移出.designer.cs和.cs。
答案 1 :(得分:2)
但是,那么你的字段需要是一个Component(实现IComponent接口或类似的东西)。 这不是有点矫枉过正吗?
也许您可以将事件处理程序附加到Disposing事件,并将字段放在该事件处理程序中?
(或者只是将它们添加到Dispose方法 - 我认为这不会有问题,因为afaik,Dispose方法中的代码不会重新生成... 理想情况下,Dispose方法实现不应该在* .designer.cs类中......)。
答案 2 :(得分:1)
我取消注册表格的designer.cs
中的Dispose方法中的任何事件 protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
_frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
base.Dispose(disposing);
}