一种解决方案是将您使用的任何一次性类型封装在派生自System.ComponentModel.Component
或实现的类中System.ComponentModel.IComponent
。
然后,您可以将它们添加到由设计器生成的代码实例化的 IContainer 中,它们将与其他组件一起被释放。
例如
class MyDisposableComponent : IComponent
{
... implementation
}
class MyUserControl : UserControl
{
MyDisposableComponent myDisposableComponent;
...
void SomeMethod()
{
myDisposableComponent = new MyDisposableComponent();
components.Add(myDisposableComponent);
// myDisposableComponent will be disposed automatically when the
// IContainer components is disposed by the designer-generated
// Dispose implementation.
}
...
}