首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待Webbrowser加载的限制

等待Webbrowser加载的限制
EN

Stack Overflow用户
提问于 2014-04-16 04:32:46
回答 2查看 432关注 0票数 1

我希望限制等待Webbrowser加载;我从下面等待Webbrowser在开始下一个操作之前加载的代码开始;我希望等待时间限制在60秒内,如果网页没有加载,那么代码将执行下一个操作;任何帮助都很感激:

代码语言:javascript
运行
复制
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    WebBrowser1.Navigate("www.mekdam.com")
    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
        Application.DoEvents()
    End While
End Sub
End Class

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-16 06:34:07

您应该在ReadyState事件中检查您的DocumentCompleted。这样它就不会挂起你的申请了。

如果您添加了计时器,如果需要太长时间,您可以取消页面的加载:

代码语言:javascript
运行
复制
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    WebBrowser1.Navigate("http://www.msn.co.uk")
    Timer1.Interval = 2000
    Timer1.Enabled = True
End Sub

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    'If the timer is not running then we are not waiting for the document to complete
    If Not Timer1.Enabled Then Exit Sub

    'Check the document that just loaded is the main document page (not a frame) and that the control is in the ready state
    If e.Url.AbsolutePath = CType(sender, WebBrowser).Url.AbsolutePath AndAlso WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
        'we loaded the page before the timer elapsed
        Timer1.Enabled = False
    End If
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    'timer has elapsed so cancel page load
    WebBrowser1.Stop()
    'Disable the timer
    Timer1.Enabled = False
End Sub
票数 1
EN

Stack Overflow用户

发布于 2014-04-16 07:06:31

代码语言:javascript
运行
复制
Dim secondTime As Boolean = False
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    WebBrowser1.Navigate("http://www.msn.co.uk")
    Timer1.Interval = 100
    Timer1.Enabled = True
    secondTime = False
    Timer1.Start()
End Sub

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    If e.Url.AbsolutePath = CType(sender, WebBrowser).Url.AbsolutePath AndAlso WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
        'loading completed before the timer elapsed
        Timer1.Enabled = False
        Timer1.Stop()
    End If
End Sub


Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    'timer we cancle the loading as it takes long time
    If secondTime = True Then
        WebBrowser1.Stop()  'Second time call
    Else
        secondTime = True   'First time call
    End If
End Sub

提要

如果对象Timer1设置为EnabledTime1.Start(),则调用Timer1.Tick函数。因此,页面将被阻止在开始加载。为了防止在时间转义之前加载这种不必要的停止,我们使用了一个变量secondTime,以确保第二次调用或转义给定的时间。为了确认我们使用了IF比较,并使它可以在第二次调用时或在给定的间隔之后获得中止调用。Timer1.Tick内部的条件确保了这一点。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23100043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档