Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 无限循环/重复脚本?_Vb.net_Loops_Browser_Refresh - Fatal编程技术网

Vb.net 无限循环/重复脚本?

Vb.net 无限循环/重复脚本?,vb.net,loops,browser,refresh,Vb.net,Loops,Browser,Refresh,我有一个Visual Basic脚本,似乎无法使其重复/循环。我希望脚本在单击给定的变量后重复,然后刷新页面。然后页面刷新,刻度为0,但我希望脚本再次重复(无限)。以下是我正在处理的脚本: Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If Not number_of_ticks &g

我有一个Visual Basic脚本,似乎无法使其重复/循环。我希望脚本在单击给定的变量后重复,然后刷新页面。然后页面刷新,刻度为0,但我希望脚本再次重复(无限)。以下是我正在处理的脚本:

Private Sub Timer1_Tick(ByVal sender As System.Object,
                        ByVal e As System.EventArgs) Handles Timer1.Tick
  If Not number_of_ticks > 100 Then
    number_of_ticks += 1
    WebBrowser1.Document.GetElementById("claimIt").InvokeMember("Click")
  Else
    'number_of_ticks has exceed the maximum amount of allowed ticks
    Timer1.Enabled = False
    WebBrowser1.Refresh()
    number_of_ticks = 0
  End If
End Sub
但当我尝试执行循环时,它不起作用,程序会变得无响应:

Private Sub Timer1_Tick(ByVal sender As System.Object,
                        ByVal e As System.EventArgs) Handles Timer1.Tick
  Do
    If Not number_of_ticks > 100 Then
      number_of_ticks += 1
      WebBrowser1.Document.GetElementById("claimIt").InvokeMember("Click")
    Else
      'number_of_ticks has exceed the maximum amount of allowed ticks
      Timer1.Enabled = False
      WebBrowser1.Refresh()
      number_of_ticks = 0
    End If
  Loop
End Sub

我不知道为什么会这样,有什么帮助吗

您的
Do循环
会导致程序永远卡住。也许您应该在方法中重新启用计时器:

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If Not number_of_ticks > 100 And Not WebBrowser1.IsBusy Then
        number_of_ticks += 1
        WebBrowser1.Document.GetElementById("claimIt").InvokeMember("Click")
    Else
        'number_of_ticks has exceed the maximum amount of allowed ticks
        Timer1.Enabled = False
        WebBrowser1.Refresh()
        number_of_ticks = 0

        ' re-enable the timer to repeat again
        Timer1.Enabled = True
    End If
End Sub

啊,我以为这会奏效,但有一个问题:我认为这个问题的意思是,它试图在页面完全刷新之前返回到单击状态。所以我想我需要先加载一个IF-WebBrowser,然后启用Timer1,但我对VB相当陌生,我想知道如何在IF语句中添加IF?@JackC.-我没有对浏览器控件做太多操作,因此我的编辑可能对您不起作用。
IsBusy
标志告诉您浏览器是否仍在加载文件,并且可能在此处用作检查。我在第一个
If
语句中添加了对
IsBusy
的检查。谢谢你的帮助,伙计:)