C# WebBrowser内存泄漏及在WPF和WinForms中的区别

一、WPF和WinForms的WebBrowser控件之间差异

winforms webbrowser暴露了更多的方法和属性.例如,wpf webbrowser中没有IsWebBrowserContextMenuEnabled,ActiveXInstance等.

关于winforms webbrowser的唯一缺点是组件内的按钮和滚动条与wpf本机控件的外观不一样.

二、WebBrowser内存泄漏

wpf的webbrowser坑太多了(js错误,无法获取newwindow事件...),所以不推荐使用它。

winform的webbrowser支持扩展,而且坑比较少,又有大量的资料,因此使用winform webbrowser是一个明智的选择。

参考文章:

1.WPF WebBrowser

wpf webBrowser控件_远走低飞的博客-CSDN博客_wpf 浏览器控件

How to get around the memory leak in the .NET Webbrowser control? - Stack Overflow

WPF WebBrowser Is Not Disposed Properly

2.WinForms WebBrowser

在wpf中使用winform webbrowser_远走低飞的博客-CSDN博客

c# - Memory leak when using WPF WebBrowser control in multiple windows - Stack Overflow

c# - How to Fix the Memory Leak in IE WebBrowser Control? - Stack Overflow

WebBrowser内存泄露_weixin_30631587的博客-CSDN博客

网上说法:

使用反射清除私有成员的方法

Dispose()调用-甚至在Web浏览器控件上调用Dispose()都不会释放资源

WinForms的WebBrowser与WPF中提供的控件相比,具有更好的功能和更好的性能。

尝试导航到about:blank,然后返回页面,IE控件占用的内存将被释放。

基本想法:“杀死自己,重启。”

使用WebBrowser.Dispose(bool)。使用方法:public class WebBrowserD : WebBrowser { internal void Dispose(bool disposing) { base.Dispose(disposing);} }

SetProcessWorkingSetSize(pi.hProcess,(SIZE_T)-1,(SIZE_T)-1))实际上并不释放任何内存,只是隐藏了内存,没有意义。

三、其他

win与ie的关系

win与ie的关系_远走低飞的博客-CSDN博客

详解Windows 7系统中IE8/IE9/IE10三个版本的关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值