0

我正在尝试从网页中提取链接,但似乎 webbrowser 无法导航,所以我在 webbrowser1.readstate <> readystate_complete 处得到无限循环...

但是,如果在 webbrowser1.readstate <> readystate_complete 处设置断点,则 webbrowser 在用户表单中成功导航,并且代码可以工作......

有任何想法吗?谢谢

Do Until n = num

    WebBrowser1.Navigate URL

    Do While WebBrowser1.readyState <> READYSTATE_COMPLETE

    Loop


    If WebBrowser1.readyState = READYSTATE_COMPLETE Then
        'code
    end if

    n = n +1

loop
4

1 回答 1

3

while您在问题和答案中使用的循环是一个忙于等待的紧密循环,在等待某些事情发生时会徒劳地消耗 CPU 周期。它适用于InternetExplorer对象(有点),因为后者在自己的单独进程中运行。它不适用于进程内WebBrowser控制,因为您的循环不会泵送 Windows 消息,而这是导航工作所必需的。如果您想坚持使用循环方法,请考虑将Sleep 250DoEvents调用放在循环中,以减轻繁忙的等待和泵送消息。仍然不建议这样做,相反,您应该考虑重构代码以使用WebBrowser_DocumentCompleteevent.

于 2013-09-26T04:08:11.130 回答