如何在VB.net中检测某一时间的过去

如何在VB.net中检测某一时间的过去,vb.net,timer,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-wh

我需要一种方法来找出从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循环,它无限运行,只根据两个条件停止。要么权重变化=真,要么时钟=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秒,系统不会停止。我可以在那里设置一个延迟,然后它就可以工作了,但是我需要精确地计算从秤上得到的重量值。如果我延迟,那么值将不准确。有办法解决这个问题吗


提前谢谢你

你可以用秒表代替计时器。此代码将循环至秒表启动后4000毫秒。你永远不会让它停在4000ms的上,因为运行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

首先打开选项strict。按钮代码的循环阻止计时器处理任何滴答声事件。它还将阻止处理来自磅秤的任何事件(如果是这样的话)。你可以设置一个4秒的计时器(没有循环),然后检查重量是否改变以匹配相同的标准。这个解决方案可以工作,但会将窗体冻结,直到秒表结束