我正在冒險進入WPF - 第一次在(VB).NET中 - 並試圖重新創建一個項目,我開始使用MS Access VBA。它基本上是在Web應用程序中刪除一系列頁面。正如你可能已經猜測,我有LoadCompleted事件的麻煩。等待WebBrowser在多個Navigate()調用之間完全加載
我已經搜索並找到了它的一些信息,但代碼的「流」只適合等待一個頁面加載。例如:
http://social.msdn.microsoft.com/Forums/nn-NO/wpf/thread/52c1bc55-dd41-468c-8759-a42726635d4b
所有的代碼執行在DocumentLoaded事件時,你只需要導航到一個頁面並執行代碼工作正常運行。但我需要爲我的應用程序執行一系列這些循環。
我該如何可靠地等待文檔完全加載,同時仍然保持代碼執行在同一個Sub中,而不是鎖定UI線程?
下面是我想要做的一個基本想法。
- 導航頁
- 爲等待頁面完全加載
- 做的東西
- 導航頁
- 沖洗,重複
PS - .NET是非常新的我所以請不要讓我的大腦堆棧溢出;)
謝謝, 布賴恩
- ##編輯## -
這是我用VBA做。這正是我想要做的,只是在「.NET」的方式,而不會阻止用戶界面主題:
Dim oIE = New SHDocVw.InternetExplorer
With oIE
.Navigate(strURL)
.Visible = False
' loop until the page finishes loading
Do While oIE.Busy : Loop
Do While oIE.ReadyState <> 4 : Loop
'Code goes here to read DOM, get fields and click a button (logging in to site)
'My code execution is done and now I'm ready to go to the next page and read the DOM
.Navigate(strURL)
End With
。 。 。 。
就是這樣。重複n次。我與每個DOM的交互顯着不同。
dbaseman,謝謝你的回覆。不幸的是,我正在瀏覽的網址並不知道。換句話說,所需的URL數量和URL本身是在每個「循環」後都會動態生成的 – brian
@brian gotcha。原則上不是這樣嗎?只需調用** getNextUrl()**的一些實現並離開你去? – McGarnagle
啊,我明白了。你說我可以在列表中添加項目,因爲我正在迭代列表。但是我對每個URL的操作(代碼)是不同的。我只是要有一個巨大的SELECT..Case來處理每個URL?由於直到列表中的下一頁才知道URL,因此如何將瀏覽器當前URL與適當的代碼塊進行匹配?我希望我能夠清楚地問這個問題。我感謝你給我你的時間來幫助。謝謝。 – brian