2016-02-08 81 views
0

在下面的代碼中,我有一個計時器,從5分鐘倒計時。我正在嘗試在mm:ss中使用lbl的可視倒數計時器,但我使用的示例不起作用。它倒計時,但不會更新lbl,直到它到達00:00。下面的問題的提問者(我得到了代碼)說,它的工作完美,但對我而言,它根本沒有。倒計時器在vb.net

The Example I used

我的代碼:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 

    picLogo.SizeMode = PictureBoxSizeMode.StretchImage 

    'Timer until update 
    tmrUpdate.Interval = 300000 '5 minutes 
    TargetDT = DateTime.Now.Add(CountDownFrom) 
    tmrUpdate.Enabled = True 


End Sub 

Private Sub tmrUpdate_Tick(sender As Object, e As EventArgs) Handles tmrUpdate.Tick 
    Dim ts As TimeSpan = TargetDT.Subtract(DateTime.Now) 
    If ts.TotalMilliseconds > 0 Then 
     lblTimer.Text = ts.ToString("mm\:ss") 
    Else 
     lblTimer.Text = "00:00" 
     tmrUpdate.Stop() 
    End If 



End Sub 
+1

您沒有正確實施它。 ***您的***計時器將關閉,但一次。 – Plutonix

+0

請解釋。 – Duraholiday

+1

您的間隔300000意味着它將在5分鐘後關閉。鏈接的代碼使用500毫秒的間隔實際倒計時直到達到目標 – Plutonix

回答

0

答:

使用異步子,我有倒計時器運行,而其他的東西是在回地面回事。這樣,應用程序仍可在Sub Wait()期間使用,並且此代碼還顯示倒數計時器。 以1秒爲間隔使用一個定時器。

Private Async Sub DoStuff() 

'Doing stuff 

timeUpDate = 599 
     tmrUpdate.Start() 
     Application.DoEvents() 
     Await Task.Run(Sub() 
          Wait() 

         End Sub) 
    Loop 
End Sub 

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles tmrUpdate.Tick 
    Dim hms = TimeSpan.FromSeconds(timeUpDate) 
    Dim m = hms.Minutes.ToString 
    Dim s = hms.Seconds.ToString 

    If timeUpDate > 0 Then 
     timeUpDate -= 1 
     lblTimer.Text = (m & ":" & s) 

    Else 

     tmrUpdate.Stop() 
     lblTimer.Text = "text" 

    End If 

End Sub 

Private Sub Wait() 
    Threading.Thread.Sleep(600000) 
End Sub