在vb.net中倒计时

时间:2016-02-08 17:02:36

标签: vb.net timer

在下面的代码中,我有一个从5分钟开始倒计时的计时器。我试图在mm:ss的lbl中有一个可视倒计时器,但我使用的例子不起作用。它倒计时但不会更新lbl直到它到达00:00。

以下问题的提问者(我是否得到了代码)说它完美无缺,但对我来说根本没有。

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 个答案:

答案 0 :(得分:0)

<强>答案:

使用Async Sub我倒计时器正在运行,而其他东西正在后台运行。这样,应用程序仍然可以在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