2013-04-07 2 views
0
 lock (lockVar) 
     { 

      if (done) 
       return; 

      if (linksvisited.Contains(webBrowser1.Url.OriginalString)) 
       return; 

      System.Console.WriteLine("Locked: " + webBrowser1.Url.OriginalString); 

      linksvisited.Add(webBrowser1.Url.OriginalString); 
     } 
      webBrowser1.Navigate(nextLink, null, null, "User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html)"); 

다음 코드를 사용하여 페이지를 반복하지만, 때로는 웹 브라우저 컨트롤이 중지되고 다음 페이지로 이동하지 않습니다. 예외가 없으면 아무 것도 멈추지 않을 것이지만, 확실히 방문 할 수있는 또 다른 링크가 있습니다. 나는 그것이 통제의 내부 오류와 관련이 있다고 생각하지만 어떻게 내가 그것을 잡아 두는 지옥. 내 예외 핸들러는 아무 것도 잡지 못합니다. 출력 콘솔에 아무것도 없습니다. 스크립팅 오류를 비활성화했습니다.웹 브라우저 컨트롤이 중지됩니다.

+0

반환하는 대신 자물쇠 안에 중첩 된 if를 사용해 보셨나요? 잠금 구조가 끝나지 않았으므로 잠금 해제되지 않고 다시 돌아올 수 있습니다. –

+1

그게 문제라고 생각하지 않습니다. http://stackoverflow.com/questions/1359184/can-i-put-a-return-statement-inside-a-lock – SamFisher83

답변

0

해당 코드 스 니펫은 어디에 있습니까? 컨트롤의 이벤트 핸들러에이 이벤트 핸들러가 있으면 스스로 죽어 버릴 수도 있습니다. 웹 브라우저 컨트롤은 페이지로드의 여러 단계에서 여러 이벤트를 수행 할 수 있으므로 (그리고 실행됩니다.)

페이지의 모든 프레임에 대해 문서 완료가 실행됩니다. (Stack OverFlow)

코드의 불완전한 부분에 대해서는 언급하기가 어렵습니다. 너무 많은 것을 계속하기 전에 내장 함수를 이해하려면 (Locking)을 읽었을 것입니다. 현재의 노력과 함께 행운을 빈다.

+0

실제로 문서가로드 된 핸들러에 있습니다. lock 문은 finally로 변환되어야하므로 죽은 상태로 끝나지 않아야합니다. – SamFisher83

관련 문제