如何免费"忙碌" c#webbrowser

时间:2017-12-17 00:43:24

标签: javascript c# webbrowser-control

我正在使用c#和webbrowser来抓取网页。

有时,我会遇到来自网页的消息"弹出错误。

我用:

hwnd = FindWindow("#32770", "Message from webpage");
hwnd = FindWindowEx(hwnd, IntPtr.Zero, "Button", "OK");
SendMessage(hwnd, 0xf5, IntPtr.Zero, IntPtr.Zero);

按下确定。但是,当我再次尝试导航时,我会收到Web浏览器仍然忙碌的错误。我怎么能强迫它再次获得自由?

我找到的唯一解决方法是尝试重新启动"浏览器。我正在做以下事情:

ie.Dispose();
ie = new System.Windows.Forms.WebBrowser();

这似乎有效,但是一旦我导航,我得到一个"此页面上的脚本导致Internet Explorer运行缓慢"弹出。我仍然可以继续导航,但我注意到加班我有一个相当大的内存泄漏。我不确定它是否来自我的方式"重新启动"浏览器或离开弹出窗口。

如果你有办法去免费"浏览器或者如果您可以确认重新启动浏览器的正确方法,那将非常感激。

1 个答案:

答案 0 :(得分:0)

您肯定正在使用Dispose()正确地销毁(优雅地)WebBrowser类。使用new创建它也很好。 (只需照顾你使用的线程 - 按照下面的链接)

根据here,您可以尝试Stop()Refresh()序列,但这可能无法阻止内存泄漏。

如果漏洞是由浏览器类,您的代码或网页本身引起的,很难从您的代码中判断出来......(很可能是网页,考虑到错误的网页数量)

但是如果速度不重要,那么处理和更新WebBrowser类应该不是问题

相关问题