2015-11-03 67 views
-2

我需要一种方法来查明从0开始的时间结束为4秒。如何在VB.net中检测到特定时间已过时

我的代码如下:

我有一个名为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 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秒过去了,系统不会停止。我可以在那里延迟一段时间,然后它就可以工作,但我需要准确衡量一个比例的重量。如果我延迟,那么这些值将不准确。有没有办法解决这个问题?

谢谢你提前

+3

从开启选项strict开始。您的按钮代码的循环阻止计时器处理任何Tick事件。它也将阻止任何规模的事件被处理(如果这是发生的事情)。你可以设置一个4秒计时器(没有循环),并检查重量是否改变,以符合相同的标准 – Plutonix

回答

0

而不是使用计时器,你可以使用秒表。此代码将循环,直到秒表开始后4000毫秒。因为运行Do..Loop(真的很简单)所需的时间,你永远无法在4000ms内完全停止,但是我认为几秒之后足够接近。

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 
相关问题