【发布时间】:2012-05-01 13:56:29
【问题描述】:
我正在冒险进入 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 线程?
这是我正在尝试做的基本想法。
- 导航到页面
- 等待页面完全加载
- 做事
- 导航到页面
- 冲洗,重复
P.S - .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 的交互有很大不同。
【问题讨论】:
标签: .net wpf vb.net user-controls webbrowser-control