2014-12-30 54 views
1

我想讓我的WebBrowser等到頁面完全加載後,然後繼續下一步。我研究瞭如何做到這一點,但是,我的代碼在頁面加載之前一直運行。C#使WebBrowser等到頁面加載

private void AdobeConnect_Load(object sender, EventArgs e) 
    { 
     for (int x = 1; x <= 3; x++) 
     { 
      while (acBrwsr.ReadyState != WebBrowserReadyState.Complete) 
      { 
       Application.DoEvents(); 
      } 
      adobeStepper(x); 
     } 
    } 
+1

難道你不能等待完成的事件嗎? –

+0

'WebBrowser'提供'Completed'事件。 –

+0

'WebBrowser.DocumentCompleted'事件 –

回答

1

問題是你依賴於ReadyState,你不應該這樣做。在WebBrowser.DocumentComplete中,您需要檢查e.Url == WebBrowser.Url,然後檢查就緒狀態。當您有框架並且使用ReadyState混亂時,DocumentComplete會使用表單多次觸發。

我對使用WebBrowser的機器人所做的工作是當我爲實際頁面擁有文檔完整狀態時激活一個計時器,然後抓取隊列中的下一個項目,以便在完成後1秒內處理該頁面。 (當然總是關閉OnTick事件中的定時器。)

我寫了一個隊列,它將一組任務組合在一起,在這裏我可以排列優先級和刪除任何項目,所以我不重複任務但只執行當DocumentCompleted e.url == webBrowser.url和我的ReadyState完成時。