vb.net中的倒计时
在下面的代码中,我有一个从5分钟开始倒计时的计时器。我试图在mm:ss中的lbl中使用一个可视倒计时,但我使用的示例不起作用。它倒计时,但直到00:00才更新lbl 问下面这个问题的人(我是否得到了代码)说它工作得很好,但对我来说根本不工作 我的代码:vb.net中的倒计时,vb.net,timer,Vb.net,Timer,在下面的代码中,我有一个从5分钟开始倒计时的计时器。我试图在mm:ss中的lbl中使用一个可视倒计时,但我使用的示例不起作用。它倒计时,但直到00:00才更新lbl 问下面这个问题的人(我是否得到了代码)说它工作得很好,但对我来说根本不工作 我的代码: Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load picLogo.SizeMode = Picture
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
回答: 我使用异步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
回答: 我使用异步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
您没有正确地实施它。你的计时器只会响一次。你的30万次间隔意味着它会在5分钟后响一次。链接代码使用500毫秒的间隔来实际倒计时,直到达到目标。哦,ok。我没有把问题读对。我想它会在倒计时时更新lbl。它确实会更新标签。大约每500毫秒更新一次,直到达到目标时间。计时器间隔决定了滴答声事件的频率。由于您发现答案有用,但未正确执行,请务必对该答案进行投票。你的计时器只会响一次。你的30万次间隔意味着它会在5分钟后响一次。链接代码使用500毫秒的间隔来实际倒计时,直到达到目标。哦,ok。我没有把问题读对。我想它会在倒计时时更新lbl。它确实会更新标签。大约每500毫秒更新一次,直到达到目标时间。计时器间隔决定了滴答声事件的频率。由于你发现这个答案很有用,所以一定要提高投票率