循环和时间延迟
Loop and Time Delay
我创建了一个加载网页的程序。
然后我编写了 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
表单的成员。
如何实现延迟?如何实现循环?
根据评论,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 或更高版本
根据 Fabio 评论更新:
可以直接完成,不需要像这样的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
下载的库
我创建了一个加载网页的程序。 然后我编写了 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
表单的成员。
如何实现延迟?如何实现循环?
根据评论,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 或更高版本
根据 Fabio 评论更新:
可以直接完成,不需要像这样的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
下载的库