return 在 sub_delay(2000) 之后返回做更多的代码
return back to do more code after sub_delay(2000)
我有一个vb.net表单+按钮+文本框+延迟子:
'DELAY SUB
Public Sub Delay(ByVal Milliseconds As Integer)
Dim Stop_Watch_2 As New Stopwatch
Stop_Watch_2.Start()
Do
Loop Until Stop_Watch_2.ElapsedMilliseconds >= Milliseconds
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For i = 1 To 10
Delay(2000) ' 2 second delay
Text_Box1.text = i.ToString
Button1.Left = Button1.Left + 30
Next
End Sub
当我 运行 表单时,我可以看到按钮每两秒向左移动一次。延迟移动的按钮没问题,但文本没有采用循环值。这种延迟方法对我来说比thread.Sleep
.
好
关于如何让文本框在延迟间隔后更新其内容有什么建议吗?
这是 运行 在您的 UI 线程上同步进行的,阻止它更新 UI 直到一切都完成。您需要致电 Text_Box1.Refresh
, or yield control back to the message pump - so the UI can be naturally repainted - with Application.DoEvents
.
旁注:您正在忙着等待,可能不应该。即使您更喜欢这种延迟方法(出于时间原因或其他原因),也可以考虑在循环中添加一个带有较小值的 Thread.Sleep
调用,让用户的 CPU 休息一下 - 或者至少让它回到编码那个猫视频。
我有一个vb.net表单+按钮+文本框+延迟子:
'DELAY SUB
Public Sub Delay(ByVal Milliseconds As Integer)
Dim Stop_Watch_2 As New Stopwatch
Stop_Watch_2.Start()
Do
Loop Until Stop_Watch_2.ElapsedMilliseconds >= Milliseconds
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For i = 1 To 10
Delay(2000) ' 2 second delay
Text_Box1.text = i.ToString
Button1.Left = Button1.Left + 30
Next
End Sub
当我 运行 表单时,我可以看到按钮每两秒向左移动一次。延迟移动的按钮没问题,但文本没有采用循环值。这种延迟方法对我来说比thread.Sleep
.
关于如何让文本框在延迟间隔后更新其内容有什么建议吗?
这是 运行 在您的 UI 线程上同步进行的,阻止它更新 UI 直到一切都完成。您需要致电 Text_Box1.Refresh
, or yield control back to the message pump - so the UI can be naturally repainted - with Application.DoEvents
.
旁注:您正在忙着等待,可能不应该。即使您更喜欢这种延迟方法(出于时间原因或其他原因),也可以考虑在循环中添加一个带有较小值的 Thread.Sleep
调用,让用户的 CPU 休息一下 - 或者至少让它回到编码那个猫视频。