WebBrowser 中,无法释放内存? 该问题我已在猪八戒高价发帖悬赏了http://task.zhubajie.com/1919114/非常急迫~ 请大家帮忙~!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是个很难的问题。应该很难有完美的解决办法。不过我试了下我的浏览器http://www.xzwj.org/,反复打开你的测试页面,基本能恢复。因为这个页面算简单页面了。大量FLASH的才真的头疼。 我也是想到用SetProcessWorkingSetSize原来楼主的代码里已经有了 SetProcessWorkingSetSize绝对不是个好主意。好在楼主注释了。 new Thread 也是有开销的啊,不是说线程越多越好。推荐是和CPU数量相等的线程数。 new Thread 这点开销相对 WebBrowser 这大家伙来说算不得什么了 那就不要用 webbrowser 啊,直接用 WebClient 或者 HttpWebRequest 就可以了。 我需要的是UI,不是网络通讯。那么多基于IE的浏览器都没有解决这样问题的方法吗? 同求解惑,我也遇到这个困扰了,我的 webBrowser,单线程,设置每秒refresh 1次,结果发现内存每秒增加3M,后台过一会儿就2个G了(电脑4个G内存),然后提示内存不足崩溃了,其实我就是想不断刷新一个页面监控上面的几个数字,一旦有我要求的弹框提示,然后直接进行一些操作,不需要之前获取到的历史数据,完全可以每次只缓冲当前页面的东西就行了,结果内存不到一小时溢出一次。。 我也在找答案,在Form2中加个一个 webBrowser1.Navigate("http://www.baidu.com"); 然后Form1中去new他,每new一次线程就增加十几条,释放了也没作用。求大神解答嘛 碰到一样的问题,在msdn上找到了答案,我贴出来给大家看看,我用了反正完美解决了https://social.msdn.microsoft.com/Forums/ie/en-US/88c21427-e765-46e8-833d-6021ef79e0c8/memory-leak-in-ie-webbrowser-control?forum=ieextensiondevelopment-- in class definition [DllImport("KERNEL32.DLL", EntryPoint = "SetProcessWorkingSetSize", SetLastError = true, CallingConvention = CallingConvention.StdCall)] internal static extern bool SetProcessWorkingSetSize(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize); [DllImport("KERNEL32.DLL", EntryPoint = "GetCurrentProcess", SetLastError = true, CallingConvention = CallingConvention.StdCall)] internal static extern IntPtr GetCurrentProcess();-- code to call when you want to reduce the memory IntPtr pHandle = GetCurrentProcess(); SetProcessWorkingSetSize(pHandle, -1, -1); 求大神解决Microsoft SOAP Toolkit Version 3 在C#的用法。 C#窗体应用程序刷新问题 请教 关于MSFlexGrid ZedGraph控件,多GraphPane中如何增加可拖动的参考线? 泛型 如何把引用的变量加到一个参数数组中去? XMLTextReader读取数据 三层体系结构中,客户端如果要进行组合查询怎么办? word打开报应用程序错误 如何获取flowLayoutPanel中所有选中checkbox的text? windows2008 server 获取天气下发 网络问题 如何将浮点数在textbox中显示成定长的浮点数形式,求助啊!
原来楼主的代码里已经有了
我需要的是UI,不是网络通讯。那么多基于IE的浏览器都没有解决这样问题的方法吗?
https://social.msdn.microsoft.com/Forums/ie/en-US/88c21427-e765-46e8-833d-6021ef79e0c8/memory-leak-in-ie-webbrowser-control?forum=ieextensiondevelopment-- in class definition [DllImport("KERNEL32.DLL", EntryPoint = "SetProcessWorkingSetSize", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
internal static extern bool SetProcessWorkingSetSize(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize); [DllImport("KERNEL32.DLL", EntryPoint = "GetCurrentProcess", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
internal static extern IntPtr GetCurrentProcess();-- code to call when you want to reduce the memory IntPtr pHandle = GetCurrentProcess();
SetProcessWorkingSetSize(pHandle, -1, -1);