我使用.NET MemoryProfiler查找应用程序中的内存泄漏,在创建和显示Winform时,我似乎无法弄清楚何时应该调用Dispose()的模式。看来当我这样做

Form frm = new SomeForm();
frm.ShowDialog();
bool test = frm.IsDisposed()


测试是“ False”,这令我感到惊讶,.NET MemoryProfiler还确认未正确处理该表格。我以为如果我“关闭(X)”对话框,它将在表单上有效地调用.Dispose(),但事实并非如此。我很好奇,如果我这样做:

Form frm = new SomeForm();
frm.Show();


当我单击表单上的“关闭(X)”按钮时,是否可以处置该表单?我试图找到一条规则,何时应调用“ Dispose()”以及何时不需要调用“ Dispose”(因为它将被隐式处置)...

最佳答案

MSDN: Form.Dispose Method (Boolean)


  如果使用Show方法显示表单,则会自动调用Dispose。如果使用了ShowDialog之类的其他方法,或者根本不显示该窗体,则必须在应用程序中调用Dispose。

关于c# - WinForms-何时调用Dispose?什么时候隐式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22846663/

10-16 08:55