2015-11-03 68 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 
相關問題