c# - WinForms-何时调用Dispose?什么时候隐式?

标签 c# .net vb.net

我使用.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/

相关文章:

c# - 使用命令提示符以静默模式运行 exe 文件

c# - 重载与泛型参数

vb.net - 更改富文本框中的线条或单词的颜色?

c# - C# 应用程序可以在没有 .NET 框架的情况下运行吗?

c# - 对套接字的异步方法 BeginSend 的队列调用

c# - DataGridView 选中行上下移动

c# - 应用程序错误 System.InvalidOperationException : An unspecified error occurred on the render thread

c# - NUnit:无法加载程序集 nunit.framework

.net - 如何统计excel中数据的行数?

c# - 如何在 C# 中将工作周 double 转换为日期时间