Я использую Watin в приложении консоли C# для проверки веб-сайтов, существует пять консольных приложений, работающих одновременно. Причина я частично использую 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 занят), таким образом, система является довольно медленной и потребность перезагрузить.
Как я изменяюсь, мой код для предотвращения этой вещи происходят и заставляют мои приложения остаться эффективными?
Я думаю, что в вашем примере кода есть только один момент, когда IE не будет близко. Поскольку вы находитесь внутри , используя
, даже если возникает исключение внутри этого , использующего
, браузер будет удален, так что все в порядке.
Но в момент создания браузера:
new IE(commentLink, true)
вы не находитесь внутри , используя
, и нет никакого волшебства попробуйте ... поймать
.
Попробуйте это , и дайте мне знать, помогло ли это:
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;
}
}
}