【发布时间】:2012-02-25 06:02:49
【问题描述】:
我有一个无模式的表格。当用户完成它并Close它时,不再需要表单(及其相关资源)。
正确的编程要求我处理任何实现 IDisposable 的东西(即我不能等待垃圾收集运行)。这包括我自己,一个 WinForms Form。
表单调用Dispose 自身的最佳或有效时间是什么时候?
在“其他”语言中,您可以从表单中销毁表单 自己调用
Release:void CloseButton(EventArgs e) { this.Release(); }此方法会导致表单在每个实例之后被销毁 方法已返回(并且表单已处理所有待处理的消息)。
在这种“其他”语言中,大错特错:
void CloseButton(EventArgs e) { this.Free(); }因为我正在从我自己下面释放我正在运行方法的对象; 这会暂时导致访问冲突。
我 假设调用它是危险的无效:
void CloseButton(EventArgs e)
{
this.Dispose();
}
但也许打电话是安全的:
void FormClosed(EventArgs e)
{
this.Dispose();
}
当不再需要无模式表单时,它的自我清理指南是什么?
【问题讨论】:
标签: winforms idisposable