请问Form窗体Close后,是否需要显式执行Dispose()方法,否则无法释放资源?
当采用Show()方法时,如何释放资源?w_Form1 wForm1 = new w_Form1();
wForm1.Owner = this;
if (wForm1.ShowDialog() == DialogResult.OK)
{
    this.tadLB.Fill(this.dsZL.LB);// 填充数据
}
wForm1.Close();
wForm1.Dispose();
w_Form1 wForm1 = new w_Form1();
wForm1.Owner = this;
wForm1.Show();
//wForm1.Close();
//wForm1.Dispose();

解决方案 »

  1.   

    多此一举吧,Close()了,资源CLR会管理的
      

  2.   

    不需要,反编译看看吧,Close调用Dispose()
      

  3.   

    可以显式的调用Dispose()方法 这样可以释放托管资源
    如果不调用则垃圾收集器调用析构函数 只能是否非释放托管资源
      

  4.   

    不执行了,可以写代码试一下
      this.Close();
                this.Dispose();
                if (1==1)
                {
                    MessageBox.Show("dd");
                }
      

  5.   

    我们就用了,在FormClosing事件里再调用  odentity.Dispose();方法。
      

  6.   

      不用了,剩下的交给CLR吧
      

  7.   

    我也知道.NET有垃圾回收机制。但我发现,采用ShowDialog()时,关闭窗口后,如果没有执行:
    wForm1.Close();  wForm1.Dispose();
    这2行时,内存中还存在wForm1窗口,因为我关闭wForm1窗口的父窗口时,居然还提示我保存wForm1窗口内的数据,wForm1窗口和它的父窗口中的数据是独立无关连的。
    让我捏了一把汗。
      

  8.   

    托管資源一般都不需要調用Dispose()方法,而非托管資源,如Com接口,資源句柄等需要自己釋放
      

  9.   

    msdn:-----Form.Close()在以下两种情况下调用 Close 不会释放窗体:(1) 窗体是多文档界面 (MDI) 应用程序的一部分且是不可见的;(2) 您是使用 ShowDialog 显示的该窗体。在这些情况下,需要手动调用 Dispose 来将窗体的所有控件都标记为需要进行垃圾回收。
      

  10.   

    这个说的最好
    我也越到过Close之后,再show。还是会保留以前信息的情况