在System.Windows.Form派生类中处置资源的位置?

时间:2011-06-27 22:23:52

标签: c# idisposable

我有一个表单在其构造函数中创建了一些我需要处理的可支配资源。但是,C#表单设计器已在Designer.cs文件中生成一个Dispose()方法,该方法似乎没有任何类型的用户挂钩。所以我不知道我应该如何实现典型的IDisposable模式。

偶尔会创建此表单但从未显示过,因此使用Close事件无济于事。

有问题的对象不是IComponents,因此我无法将它们添加到this.components

我可以在哪里放置这个清理代码,并确保它在表单处理时运行?

3 个答案:

答案 0 :(得分:8)

您可以将Dispose()方法从Designer.cs文件移动到源代码文件。并修改它以为表单类中的任何一次性成员添加dispose调用。这是可以编辑设计器文件的少数情况之一,您只需要远离#region标记为“Windows窗体设计器生成的代码”内的代码。

答案 1 :(得分:2)

我经常想到这一点,虽然我从未真正遇到过这个问题。您可以使用Disposed事件,但可能有更好的方法可以挂钩我错过的Dispose

答案 2 :(得分:1)

表单和控件提供“Disposed”事件,可用于处置他们使用的任何资源。