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場合にのみエスケープします。代わりにこれを試してください:NownewDate

    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 に答える