我正在尝试自学C#并开始尝试转换我最初在Autoit中编写的程序。
我正在使用Windows应用程序表单,该程序假设将一个或两个链接作为输入。导航到那些页面,从表中获取一些链接,然后访问每个页面以获取一些内容。
如果只输入一个链接,它似乎转到该页面并从表中抓取链接。如果输入两个链接,它似乎只从第二个表中获取链接。
因此,如果两个链接传递此方法
private void getPageURLList(string site1, string site2)
{
getPageURLList(site1);
getPageURLList(site2);
}
调用与只有一个链接
时调用的方法相同 private void getPageURLList(string site)
{
webBrowser.DocumentCompleted += createList;
webBrowser.Navigate(site);
}
我很确定问题是“导航”在createList第一次启动之前第二次被调用。
我使用WebBrowser的原因是因为这些页面使用Javascript对表中的链接进行排序,因此HTTPRequests和HTMLAgilityPack似乎无法获取这些链接。
所以我想我的问题是:在我完成当前页面上的操作之前,如何让我的WebBrowser无法导航到新页面?
答案 0 :(得分:0)
你必须创建一个bool变量来知道第一个进程何时完成。然后开始另一个。 Application.DoEvents()会帮助你。
请注意,所有这些事件都在主线程中运行。
答案 1 :(得分:0)
在您的文档完成事件中,您可以进行链接处理。在链接处理结束时,您可以通过浏览器导航到下一个URL