当前位置:  开发笔记 > 编程语言 > 正文

大量使用Watin,IE保持开放的问题

如何解决《大量使用Watin,IE保持开放的问题》经验,为你挑选了1个好方法。

我在C#控制台应用程序中使用Watin来抓取网站,同时运行五个控制台应用程序.我部分使用Watin作为爬虫的原因是因为一些网站使用javascript(或ajax)来设置页面内容.

以下是获取页面评论计数的示例代码:

        Settings.Instance.MakeNewIeInstanceVisible = false;
        using (var browser = new IE(commentLink, true))
        {
            browser.Link(Find.ByUrl(commentLink)).WaitUntilExists(20);

            Span commentSpan = browser.Span("COUNT_TOTAL");

            if (commentSpan.Exists)
            {
                int commentCount;
                if (Int32.TryParse(commentSpan.InnerHtml, out commentCount))
                {
                    return commentCount;
                }
            }
        }

我的问题是运行这5个控制台应用程序一段时间后(90分钟),很多IE实例保持打开(因为超时或错误或IE忙),所以系统很慢,需要重新启动.

如何更改我的代码以防止此事发生并使我的应用程序保持有效?



1> prostynick..:

我想,在你的示例代码中,只有一个时刻,当IE不会接近时.由于你在里面using,即使using发生异常,浏览器也会被处理掉,所以一切都很好.

但在创建浏览器的那一刻:

new IE(commentLink, true)

你不在里面using,没有魔法try...catch.试试这个,让我知道它是否有帮助:

Settings.Instance.MakeNewIeInstanceVisible = false;
using (var browser = new IE(true))
{
    browser.GoTo(commentLink);

    browser.Link(Find.ByUrl(commentLink)).WaitUntilExists(20);

    Span commentSpan = browser.Span("COUNT_TOTAL");

    if (commentSpan.Exists)
    {
        int commentCount;
        if (Int32.TryParse(commentSpan.InnerHtml, out commentCount))
        {
            return commentCount;
        }
    }
}

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有