vb6函数到vb.net

时间:2012-07-12 09:57:32

标签: vb.net vb6-migration

我在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

由于

2 个答案:

答案 0 :(得分: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命名您的方法(方法名称的第一个字母大写)。

答案 1 :(得分: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