WebBrowser  占得内存释放不了
        private void timer2_Tick(object sender, EventArgs e)
        {
                                            wbs1 = new WebBrowser();
                    wbs1.Navigate(@"http://www.taobao.com");
                    int h = 0;
                    while (h < 10)
                 
                    {
                          System.Threading.Thread.Sleep(500);
                           h++;
                        Application.DoEvents();                    }
                  
                               
                   wbs1.Dispose();
                   wbs1 = null;
       }    

解决方案 »

  1.   

    在释放WebBrowser的地方,加上这个有点用
    [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
    private static extern bool SetProcessWorkingSetSize(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize);IntPtr pHandle  = System.Diagnostics.Process.GetCurrentProcess().Handle;
    SetProcessWorkingSetSize(pHandle, -1, -1);另外可以手动回收以下垃圾
    GC.Collect();
    GC.WaitForPendingFinalizers();
    GC.Collect();虽然不能回到navigate之前的状态,但基本可以接受了,你可以试下效果看看
      

  2.   

     IntPtr pHandle  = System.Diagnostics.Process.GetCurrentProcess().Handle;
    SetProcessWorkingSetSize(pHandle, -1, -1);
    没什么效果啊
      

  3.   

    别瞎忙了,GC是没有用的,这是JS内存泄漏造成的,唯一的办法就是重启进程。实际上,WebBrowser这种客户端控件本身应该尽量避免在非用户交互的场合使用。
      

  4.   

    WebBrowser就是这样,无解,可以换用火狐内核的浏览器,可以参考geckoFX,这是.net可用的火狐浏览器内核控件
      

  5.   

    WebBrowser  实质是对IE内核的一种封装如果不是与用户交互,应该使用WebRequest/WebResponse以及这两个抽象基类的派生子类来进行http交互