我正在冒险进入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