C# 内存泄漏(webBrowser)

来自:http://q.cnblogs.com/q/40080/

C# 内存泄漏(webBrowser)

0
悬赏园豆:50 [已解决问题] 浏览: 1225次

我采用的是WebBrowser控件写的C#程序,不断刷网页数据,程序运行12个小时,电脑出现内存不足,然后程序卡死,报错内存泄漏...面对这个问题,我希望各位大哥给点建议,如果解决webbrowser内存泄漏的事件????

jiajinhao的主页 jiajinhao | 初学一级 | 园豆: 139
提问于:2012-08-15 17:14
最佳答案
0
收获园豆: 25
Launcher | 高人七级 |园豆:23016 | 2012-08-15 17:26

你提供的网页,我用ie打不开。。。

jiajinhao | 园豆:139 (初学一级) | 2012-08-16 14:31

@jiajinhao: 让你们的网管把权限给打开。这是一个已知BUG,官方的解决办法:

http://support.microsoft.com/kb/943510/zh-cn

偏方:

1,建立线程,动态创建WebBrowser,再试用完后freeandnil,线程销毁WebBrowser所占用的内存也随即销毁~

2,建立多程序,通过程序1,调用程序2进行页面访问,当操作完后,程序2退出,内存自动清除回收,程序与程序之间的信息交互可通过ini文件的读取和保存~

[color=red][b]三、升级运行环境解决方案[/b][/color]


还有网友提供了下面这种方案:

把IE升级到IE8以后,这一BUG将不复存在了。
该兄弟声称升级IE后,生成的EXE文件可用,如果是用VB6开发的源程序,则又不能识别webbrowser控件了。
这时可以采用修改注册表,注册组件的方法解决这一问题:

将下面文字另存为一个.reg文件双击导入注册表:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}]
[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1]
@="Microsoft Internet Controls"
[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0]
[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win32]
@="C:\\WINDOWS\\system32\\ieframe.dll"

Launcher | 园豆:23016 (高人七级) | 2012-08-16 14:44
其他回答(1)
0

不断刷网页数据这个代码不知道是否用的递归?

如果是可以考虑把递归改为循环试试。

如果不是,不好意思,我废话了 呵呵

收获园豆: 25
寒风吹过 | 园豆:188 (初学一级) | 2012-08-15 17:53

谢谢你的提醒,不过刷网页,我采用的就是递归调用,从网页中找到我所需要的元素或者东西

jiajinhao | 园豆:139 (初学一级) | 2012-08-16 14:30

@jiajinhao: 一般来说,递归都可以改为循环。

递归的话,GC不会回收,一直等到递归完毕才会回收内存。导致程序占用内存不断膨胀。

按照你说的程序运行12个小时,电脑出现内存不足,我估计就是这个问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值