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 休息一下 - 或者至少让它回到编码那个猫视频。