我正在冒险进入 WPF - 第一次在 (VB).NET 中 - 并尝试重新创建我在 MS Access VBA 中开始的项目。它基本上是在 Web 应用程序中抓取一系列页面。正如您可能已经猜到的那样,我在 LoadCompleted 事件中遇到了麻烦。
我已经搜索并找到了一些关于它的信息,但是代码的“流程”只适合等待一页加载。例如:
http://social.msdn.microsoft.com/Forums/nn-NO/wpf/thread/52c1bc55-dd41-468c-8759-a42726635d4b
所有代码执行都在 DocumentLoaded 事件中运行,当您只需要导航到一页并执行代码时,该事件就可以正常工作。但是我需要为我的应用程序执行一系列这些循环。
如何可靠地等待文档完全加载,同时仍将代码执行保持在同一个 Sub 中并且不锁定 UI 线程?
这是我正在尝试做的基本想法。
- 导航到页面
- 等待页面完全加载
- 做东西
- 导航到页面
- 冲洗,重复
PS - .NET 对我来说很新,所以请不要让我的大脑出现堆栈溢出;)
谢谢,布赖恩
-## 编辑 ##-
这就是我在 VBA 中所做的。这正是我想要做的,只是以“.NET”的方式并且不阻塞 UI 线程:
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 的交互有很大不同。