循环和时间延迟

时间:2017-08-27 11:03:13

标签: vb.net loops wait

我创建了一个加载网页的程序。 然后我编写了3个按钮,在网站上执行操作。这个功能很好。

但是现在我想要实现一个单击Button1一次的按钮,然后它应该等待5秒然后循环应该开始并按下Button2 10次。在此之后,整个过程应该重新开始。该程序是一种机器人。

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    Call Button1_Click(sender, e)
    Application.Wait(Now + TimeValue("0:00:10"))
End Sub

Application.Wait无法正常运作,因为Application不是System.Windows表单的成员。

如何实施延迟?我该如何实现循环?

1 个答案:

答案 0 :(得分:1)

基于评论,Threading.Thread.Sleep()会给您一个网站未加载的问题。问题是Threading.Thread.Sleep()会阻止整个程序执行代码,因为它会冻结它。以下是如何使程序等待一段时间。

Public Class Form1

    Private Async Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        MessageBox.Show("Commands before waiting")
        Await Wait(5000)
        MessageBox.Show("Commands after waiting")
    End Sub

    Private Async Function Wait(ByVal ms As Integer) As Task
        Await Task.Delay(ms)
    End Function

End Class

只需在等待之前和之后使用您需要的命令替换MessageBox。

注意:这需要.NET Framework 4.5或更高版本

根据法比奥评论更新

可以直接完成,无需像这样的Wait方法:

Public Class Form1

    Private Async Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        MessageBox.Show("Commands before waiting")
        Await Task.Delay(5000)
        MessageBox.Show("Commands after waiting")
    End Sub

End Class

这也可以在.NET framework 3.5或更高版本中使用,但它需要一些可以从here下载的库