0

我在vb6中得到了这个代码

Private Sub pause(ByVal interval As Variant)
    Dim Current As Variant

    Current = Timer
    Do While Timer - Current < Val(interval)
        DoEvents
    Loop
End Sub

如何在 vb.net 中转换?我已经尝试过这种方式,但它不起作用。

错误在哪里?

Private Sub pause(ByVal interval As Single)            
      Dim newDate As Date    
      newDate = DateAndTime.Now.AddSeconds(interval)

      While DateAndTime.Now.Second <> newDate.Second                
          Application.DoEvents()           
      End While    
End Sub

谢谢

4

2 回答 2

1

While如果Now秒数等于秒,它只会转义newDate。试试这个:

    Private Sub pause(ByVal interval As Single)
       Dim waitUntil As Date = DateAndTime.Now.AddSeconds(interval)
       While DateAndTime.Now < waitUntil
           Application.DoEvents()
       End While
    End Sub

我也可以建议您使用 PascalCase 命名您的方法(方法名称的第一个字母大写)。

于 2012-07-12T10:17:00.673 回答
0

我认为以下是原始代码的最佳转换(与 andygrips 答案略有不同):

Private Sub Pause(ByVal seconds As Integer)
    Dim current As Date

    current = DateTime.Now
    Do While (DateTime.Now - current).TotalSeconds < seconds
        Application.DoEvents()
    Loop
End Sub

但是请注意,最好完全避免在 .NET 中使用 DoEvents

于 2012-07-12T13:06:17.083 回答