SendKitChen 是一个窗口。
每次在父窗口中点击button7按键都会生成一个新窗口,代码如下:
        private void button7_Click(object sender, EventArgs e)
        {
            SendKitchen dlgSendKitchen = new SendKitchen();
            dlgSendKitchen.ShowDialog();
        }在子窗口中,单击button1,会关闭该窗口,代码如下:
        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }问题是,这里应该使用this.Close 还是 this.Dispose 来关闭窗口?
如果使用close 会不会造成每次点击button7都生成新的窗口资源?
另外使用close关闭窗口时,该窗口的资源什么时候释放?是等程序结束时才释放吗?

解决方案 »

  1.   

    如果用close来关闭窗口,是不是button7的代码这样更好一些?        private void button7_Click(object sender, EventArgs e)
            {
                SendKitchen dlgSendKitchen = null;
                if (dlgSendKitchen == null)
                {
                    dlgSendKitchen = new SendKitchen();                
                }
                dlgSendKitchen.ShowDialog();
            }
      

  2.   

    dispose跟close一般来说效果是一样的
      

  3.   

    系统在需要的时候会自动回收的,你只要保证使用的资源在Dispose方法里被释放掉就好了。
      

  4.   

    直接使用 show方法打开已经close的窗体会不会造成不安全?
    虽然我现在试验在所有情况下他都可以正常打开。
      

  5.   

    似乎没有什么不安全的吧,close方法也是调用的Dispose,托管代码系统会自己选择回收的,至于它什么时候回收你就要问微软了,谁也看不到FM里怎么封装的,如果自己不放心也可以GC一下