2010-03-04 6 views
5

Watin을 사용하여 C# 콘솔 앱에서 웹 사이트를 크롤링하고 동시에 5 개의 콘솔 앱을 실행합니다. Watin을 크롤러로 부분적으로 사용하는 이유는 일부 웹 사이트가 자바 스크립트 (또는 아약스)를 사용하여 페이지 콘텐츠를 설정하기 때문입니다. 내 문제는 잠시 (90 분)에 대해이 5 콘솔 응용 프로그램을 실행 한 후, IE 인스턴스의 많은 개방 체재하는있다 Watin의 과도한 사용, IE가 열린 상태로 유지

 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; 
       } 
      } 
     } 

(이유는 다음

페이지 코멘트 수를 얻을 수있는 샘플 코드입니다 시간 초과 또는 오류 또는 IE가 사용 중입니다.) 시스템이 매우 느리고 재부팅해야합니다.

어떻게 이런 일이 일어나지 않도록 내 코드를 변경하고 내 앱을 효율적으로 유지 하시겠습니까?

답변

7

제 생각에는 샘플 코드에는 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; 
     } 
    } 
} 
관련 문제