这是.NET Web浏览器控件的一个广为人知的旧问题。 简介:使用.NET webbrowser控件导航到页面会增加永远不会释放的内存使用量。 重现内存泄漏:将WebBrowser控件添加到窗体。 使用它来导航到任何你想要的网页。 关于:空白作品,在Google图片上滚动直到您的使用率为100MB +,然后在其他地方浏览以注意到几乎没有任何内存被释放是一个更戏剧性的演示。 我目前对应用程序的要求包括长时间运行,显示有限的IE7浏览器窗口。 运行IE7自己的一些混蛋设置的钩子,BHO和组策略也不希望,虽然这看起来像在这个时候的后备。 将浏览器embedded到Windows窗体应用程序中。 使用不同的浏览器基础不是我可用的选项。 IE7是必需的。 以前与这个已知的内存泄漏相关的线程和文章: http://www.vbforums.com/showthread.php?t=644658 如何解决在IE WebBrowser控制内存泄漏? 在多个窗口中使用WPF WebBrowser控件时内存泄漏 http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/88c21427-e765-46e8-833d-6021ef79e0c8/ http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/8a2efea4-5e75-4e3d-856f-b09a4e215ede http://dotnetforum.net/topic/17400-appdomain-webbrowser-memory-leak/ 通常build议的修补程序不起作用: 去不同的页面并不重要。 约:空白触发泄漏。 它不需要一个页面有JavaScript,或任何其他额外的技术。 使用不同版本的Internet Explorer并不重要。 7,8,9都显示相同的症状,据我所知,所有版本都有相同的内存泄漏的控制。 处置()控制不起作用。 垃圾收集没有帮助。 (事实上,我已经做了这方面的研究表明泄漏是在Webbrowswer控制包裹的非托pipeCOM代码。) 将进程可用内存最小化并设置为-1,-1(SetProcessWorkingSetSize()或simimlar。)只会减less物理内存使用量,不会影响虚拟内存。 调用WebBrowser.Stop()不是一个解决scheme,并打破使用除静态网页以外的任何function,而不仅仅是稍微减less泄漏。 在导航到另一个文档之前强制等待文档加载完全也无济于事。 将控件加载到单独的appDomain中并不能解决问题。 (我自己并没有这样做,但研究显示其他人没有这个路线的成功。) 使用不同的包装如csexwb2没有帮助,因为这也遭受同样的问题。 清除临时Internet文件caching不做任何事情。 问题是在活动内存中,而不是在磁盘上。 整个应用程序closures并重新启动时,内存将被清除。 我愿意直接在COM或Windows API中编写我自己的浏览器控件,如果这是对问题的肯定修复。 当然,我宁愿不要那么复杂的修复; 我宁愿避免低级别做事情,因为我不想在浏览器支持的function方面重新发明轮子。 Letalone在自己的样式浏览器中复制IE7function和非标准行为。 帮帮我?
我最近升级到IE9-beta。 现在,在我的.Net(3.5)WinForm应用程序中,我想使用WebBrowser控件。 所以我的问题是, WebBrowser控件是否会显示IE9的所有属性和function? 我关心的是,我想在它上面渲染一些SVGgraphics。