当前位置:  开发笔记 > 编程语言 > 正文

.NET WinForm GC问题

如何解决《.NETWinFormGC问题》经验,为你挑选了1个好方法。

这段代码干净了吗?

private void button1_Click(object sender, EventArgs e)
{
  frmCustomDialog f = new frmCustomDialog();
  if(f.ShowDialog() == DialogResult.OK)
    TextBox1.Text = f.MyCustomProperty;
}

您是否需要关闭或处理表格f或任何其他内容?还是自动垃圾收集?

谢谢.



1> Jon Skeet..:

是的,您应该处理以下表格:

private void button1_Click(object sender, EventArgs e)
{
    using (frmCustomDialog f = new frmCustomDialog())
    {
        if(f.ShowDialog() == DialogResult.OK)
        {
            TextBox1.Text = f.MyCustomProperty;
        }
    }
}

ShowDialog()不会丢弃表单,因为您可以重复使用并再次显示它.如果您不需要这样做,您应该自己处理它.

来自以下文件ShowDialog():

与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置DialogResult属性的值时,.NET Framework不会调用Close方法.而是隐藏表单,并且可以在不创建对话框的新实例的情况下再次显示该表单.因为显示为对话框的表单未关闭,所以当应用程序不再需要该表单时,必须调用表单的Dispose方法.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有