2013-03-31 1 views
0

У меня есть сценарий в Visual Basic, который, похоже, не может заставить его повторять/цитировать. Я хочу, чтобы сценарий повторялся после нажатия на указанную переменную, а затем обновление страницы. Затем страница обновляется, а тики - 0, но затем я хочу, чтобы сценарий повторялся снова (INFINITE). Вот сценарий я имею дело с:Бесконечный LOOP/повторный скрипт?

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 

, но когда я пытаюсь сделать LOOP, он не работает, программа перестает отвечать на запросы:

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 

Я не знаю, почему это происходит, любая помощь?

ответ

0

Ваш Do-Loop заставляет программу застревать навсегда. Может быть, вы просто должны повторно включить таймер в вашем методе:

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 
+0

Ahh, я думал, что это работало бы, но есть проблема: http://gyazo.com/2a6935adecafffe3f4628fe899c7cd28 и то, что я думаю, что эта проблема означает, он пытается вернуться к нажатию, прежде чем страница будет полностью обновлена. Поэтому я думаю, что мне нужно установить IF WebBrowser Loaded THEN, чтобы включить Timer1, но я довольно новичок в VB, и мне было интересно, как я могу ввести IF в IF? –

+0

@JackC. - Я не много сделал с контролем браузера, поэтому мое редактирование может не сработать для вас. Флаг 'IsBusy' сообщает, что браузер по-прежнему загружает файл и может быть что-то использовать здесь в качестве проверки. Я добавил чек для 'IsBusy' в первый оператор' If'. –

+0

Спасибо за помощь помощник :) –

Смежные вопросы