c# winform 程序 子窗体关闭时, 如何释放窗体所占用的内存。
form.close();
后,内存,并没有释放啊。
一个程序,随着窗体的一直打开,关闭,内存占用量很大啊 
急 如何解决啊

解决方案 »

  1.   

    form.dispose();
    也不行,试过了 
    谢谢你的回复。
      

  2.   

    你可以试一下使用这样的函数   
        
      public   void   Dispose()   
      {   
      /*对窗体控件进行     *.close();   操作   
      GC.SuppressFinalize(this);   
      }   
        
      这函数运行于你的Form2关闭的时候,   作用是要Form2不进入垃圾回收!   直接释放其空间!     
        
      希望能帮到你!
      

  3.   

    GC.SuppressFinalize(this)也不会马上回收,但会在近期回收
      

  4.   

    GC.SuppressFinalize(this);   请求系统不要调用指定对象的终结器。然后我又调用了 
     GC.ReRegisterForFinalize(this);   请求系统调用指定对象的终结器,此前已为该对象调用 SuppressFinalize在 form关闭事件里 写的 还是不能是否该窗体所占用的内存。后来,我又把 GC.SuppressFinalize(this); 放到窗体初始化里面
    在窗体关闭时 调用  GC.ReRegisterForFinalize(this); 还是不能释放 内存,但我发现 在程序最小化时,可以是否内存。
    不知道 程序是调用什么东西释放的内存。还是 很谢谢你的回答。
      

  5.   

    override dispose
      

  6.   

    以上答案 都不能解决我偶的问题
    但 还是谢谢 各位了 。
    分少 请不要介意。
    我给出我偶的方法。希望对 人 有点启发
            [DllImport("kernel32.dll")]
            private static extern bool SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);
            private static void FlushMemory()
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                if (Environment.OSVersion.Platform == PlatformID.Win32NT)
                    SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
                //System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5);
            }
      

  7.   

    我已经找到解决办法了!子窗体关闭,自动会释放进程所占用的内存资源,而且只要在主窗体加入        private void MainForm_MdiChildActivate(object sender, EventArgs e)事件即可!
      

  8.   

    我已经找到解决办法了!子窗体关闭,自动会释放进程所占用的内存资源,
    而且只要在主窗体加入MainForm_MdiChildActivate(object sender, EventArgs e)事件即可!
    需要的朋友加QQ群:70790810