我正在使用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运行缓慢"弹出。我仍然可以继续导航,但我注意到加班我有一个相当大的内存泄漏。我不确定它是否来自我的方式"重新启动"浏览器或离开弹出窗口。
如果你有办法去免费"浏览器或者如果您可以确认重新启动浏览器的正确方法,那将非常感激。
答案 0 :(得分:0)
您肯定正在使用Dispose()
正确地销毁(优雅地)WebBrowser类。使用new
创建它也很好。 (只需照顾你使用的线程 - 按照下面的链接)
根据here,您可以尝试Stop()
和Refresh()
序列,但这可能无法阻止内存泄漏。
如果漏洞是由浏览器类,您的代码或网页本身引起的,很难从您的代码中判断出来......(很可能是网页,考虑到错误的网页数量)
但是如果速度不重要,那么处理和更新WebBrowser类应该不是问题