2014-04-24 3 views
0

프로세스가 특정 순서 여야하기 때문에 WebBrowser.Navigate()가 같은 스레드에서 실행되는 것을 방지해야합니다.WebBrowser가 동일한 스레드에서 실행됩니다.

async/await 구현을 사용하여 Async/Await implementation of WebBrowser class for .NET이 왔지만 지원하지 않는 .net 3.5를 사용해야합니다.

누구나 다른 방법을 알고 계십니까?

+1

동일한 스레드에서 실행되지 않도록 할 수는 없지만 WebBrowser는 단일 스레드 COM 개체입니다. async/await의 간단한 대안은 상태 시스템입니다. 또는 [여기에 표시] (http://stackoverflow.com/a/4271581/17034)와 같이 별도의 스레드에서 모든 것을 실행하십시오. –

+0

'async' /'await'을 사용할 수 없다면 아마도'IEnumerable' /'yield'를 사용할 수 있습니다 : http://stackoverflow.com/a/22296644/1768303 – Noseratio

답변

0

나는 기본 폼에 플래그를 설정 끝났다. 그런 다음 플래그가 재설정 될 때까지 thread.sleep이 있습니다.

0

는 지금까지 내가 당신의 요구 사항을 이해, 당신은 다음과 같은 방법으로 WebBrowser 구성 요소의 DocumentCompleted 이벤트를 사용할 수 있습니다

webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Loaded); 
webBrowser.Navigate(...); 

... 

void Loaded(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    // do stuff that needs to be run after the page is loaded 
} 
관련 문제