如何检测VB.net中某个时间过去了

时间:2015-11-03 15:36:55

标签: vb.net timer

我需要一种方法来找出从0开始的时间到4秒的时间。

我的代码如下:

我有一个名为weightdelaycount的全局变量,每1000个时间间隔递增一次。

Private Sub Timer_weightcheck_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer_weightcheck.Tick
    weightdelaycount = weightdelaycount + 1
End Sub

现在我有了无限运行的do while循环,只能根据两个条件停止。 weightchange = True或时钟= 4秒。

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

    weightdelaycount = 0
    Timer_weightcheck.Enabled = True
    Do While 1

        If (weightchange() = True ) Then
            Timer_weightcheck.Enabled = False
            Exit Do
        End If

        If (weightdelaycount = 4) Then
            Timer_weightcheck.Enabled = False
            Exit Do
        End If
    Loop

    MessageBox.Show(weightdelaycount)

End Sub

从上面的例程中可以看出,如果满足这两个条件,我正在使用exit Do退出循环。问题是如果weightchange()不是True并且4秒后系统没有停止。我可以在那里延迟,然后它可以工作,但我需要准确的从我从秤得到的重量值。如果我延迟,那么值将不准确。有办法解决这个问题吗?

提前谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用秒表,而不是使用计时器。秒表启动后,此代码将循环至4000毫秒。你永远不会让它在4000毫秒停止完全,因为通过Do..Loop(最小的真实)运行所需的时间,但我认为在足够接近之后几毫秒。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim weightdelaycount = 0
    Dim timer As New Stopwatch
    timer.Start()
    Do
        If (weightchange() = True) Then
            timer.Stop()
            Exit Do
        End If
    Loop Until timer.ElapsedMilliseconds > 4000
    timer.Stop()
    MessageBox.Show(timer.ElapsedMilliseconds)
End Sub