2011-11-24 6 views
0

웹 브라우저가 페이지로드를 완료 할 때까지 일시 중지 루프가 필요합니다.webBrowser가 페이지를로드하는 동안 루프를 일시 중지하는 가장 좋은 방법은 무엇입니까?

string[] lines = (string[]) Invoke((ReadLine)delegate 
       { 
        return logins.Lines; 
       }); 


foreach (string line in lines) { 
    //..   
    if (TryParseUserDetails(line, false, out data) { 
     //...          
      wb.Navigate(url.Next()); 
    } 
} 

계속로드하기 전에 페이지로드를 기다리는 방법 wb?

WebBrowserDocumentCompletedEventHandler 콜백 함수에서 변수를 true로 설정하여 폴링 플래그를 사용해 보았습니다. 다음 :

wb.WaitForDone(); 

어떤 도움에 감사드립니다 :

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(
          delegate(object sender2, 
           WebBrowserDocumentCompletedEventArgs args) 
          { 

          done = true; 
         }); 

// ..

wb.Navigate(url.Next(); 
    while (!done) 
    { 

    } 
    done = false; 

내가 좋아하는 뭔가를 찾고 있어요. 미리 감사드립니다.

답변

1

부울 대신 AutoResetEvent를 사용해 볼 수 있습니다. 마찬가지로 : 루프 외부

:

AutoResetEvent evt = new AutoResetEvent(false); 

그런 다음 이벤트 처리기 : 루프에서

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(
         delegate(object sender2, 
          WebBrowserDocumentCompletedEventArgs args) 
         { 
          evt.Set(); 
         }); 

다음 :

evt.WaitOne(); 
+1

EventHandler를 'wb.DocumentCompleted + = (o, args) => evt.Set();'과 같이 바꿀 수도 있습니다. – ebb

1

DocumentCompleted 여기에 명시된대로 SO Question과 같은 간단한 내용을 원하는 이유는 무엇입니까?

+0

나는에 ACESS에 대한 링크를 많이 가지고 webBrowser, 링크를 통해 링크를 acessing해야합니다. –

+0

정말 필요한 경우 튜더의 대답이 귀하의 필요에 가장 잘 맞을 것입니다. – dasheddot

관련 문제