C#执行这段代码内存就一直往上飙,求助。

爱吃花生米的花生 2019-03-01 04:30:32
用gecko内核写了一段代码,然后想获取html,然后发现反复执行下面的代码内存就一直往上飚,有什么办法可以解决吗? AutoJSContext context = new AutoJSContext(geckoWebBrowser1.Window); string result = ""; context.EvaluateScript("document.getElementsByTagName('html')[0].innerHTML", out result); return result;
...全文
320 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
“要输入验证码”为什么就不能让 context 仅仅实例化一次?
  • 打赏
  • 举报
回复
引用 4 楼 FainSheeg的回复:
之前用.net自带的webbrowser也遇到这个问题,加载一次网页就涨一次内存,释放不了。想了个办法,把browser声明为全局变量,只new一次。要获取网页就不断的在同一个实例里不断的刷新而已,不会一直涨。
之前想到过,但是我要获取的页面要输入验证码,干了个尬。
  • 打赏
  • 举报
回复
引用 3 楼 NCScan的回复:
display 了解一下?
之前想到过,但是我要获取的页面要输入验证码,干了个尬。
FainSheeg 2019-03-07
  • 打赏
  • 举报
回复
之前用.net自带的webbrowser也遇到这个问题,加载一次网页就涨一次内存,释放不了。想了个办法,把browser声明为全局变量,只new一次。要获取网页就不断的在同一个实例里不断的刷新而已,不会一直涨。
NCScan 2019-03-07
  • 打赏
  • 举报
回复
display 了解一下?
  • 打赏
  • 举报
回复
这个脚本是获取html的,后来我反复测试发现不是这段代码造成的内存上涨,而是我每刷新一次gecko的页面内存就自动上涨。比如我用gecko刷新百度页面内存就增加而且只增不减。曾试过用using以及GC,都没有用。后来我直接新增一个子窗口在子窗口里放一个gecko然后刷新百度,再关闭这个子窗口,结果新增的内存依旧没有释放,要关闭父窗口才行。能帮我提供下思路吗?
xuan.ye 2019-03-04
  • 打赏
  • 举报
回复
[code=c#] context.EvaluateScript("document.getElementsByTagName('html')[0].innerHTML", out result); [/code] 通过文字 EvaluateScript 是执行脚本函数吗?? document.getElementsByTagName('html')[0].innerHTML 这不是一个脚本函数。 前端示例:

<script>

function getHtml()
{
   return document.getElementsByTagName('html')[0].innerHTML;
}
</script>

context.EvaluateScript("getHtml()", out result);

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧