gpt4 book ai didi

.net - 使用调度程序计时器 + 使用 VB.NET 的秒表执行时获得不正确的计时

转载 作者:行者123 更新时间:2023-12-04 18:11:47 28 4
gpt4 key购买 nike

这里我将时间变量初始化为 0 并使用 StopWatch计算毫秒和 DispatcherTimer更新用户界面

Imports System.Threading
Imports Windows.UI.Xaml

Dim dt As DispatcherTimer = New DispatcherTimer
Dim dd As Integer = 0
Dim mm As Integer = 0
Dim hh As Integer = 0
Dim ss As Integer = 0
Dim ms As Integer = 0
Dim stopwatch As System.Diagnostics.Stopwatch = New System.Diagnostics.Stopwatch

Private Sub ontimertick()
ms = stopwatch.ElapsedMilliseconds
ss = ms / 1000
ms = ms Mod 1000
mm = ss / 60
ss = ss Mod 60
hh = mm / 60
mm = mm Mod 60
dd = hh / 24
hh = hh Mod 24
MicroSeconds.Text = ms.ToString("00")
Seconds.Text = ss.ToString("00")
Minutes.Text = mm.ToString("00")
Hours.Text = hh.ToString("00")


End Sub

Private Sub StartButton_Click(sender As Object, e As RoutedEventArgs) Handles StartButton.Click

dt.Interval = New TimeSpan(0, 0, 0, 0, 100)
AddHandler dt.Tick, AddressOf ontimertick
stopwatch.Start()
dt.Start()

End Sub

问题是所有变量的第一个实例的增量时间是我预期的实际时间的 1/2。

例如seconds.text 在第 500 毫秒更新为 1,下一个在 1000 毫秒后更新

同样,Minutes.text 在第 30 秒后更新为 1,然后在 60 秒后正常递增

与小时和天相同,但仅在第一个实例之后,它在正常间隔后递增

那么任何人都可以帮我找出逻辑错误吗?

我想知道如何反转过程并倒计时?

你们能帮我解决我可以实现的想法/逻辑吗?

最佳答案

我认为你做的工作比你需要的要多。 Stopwatch.Elapsed属性返回 TimeSpan ,其中包含耗时的所有各个部分。

您的 ontimertick()可能看起来像这样:

Private Sub ontimertick()
TimeSpan e = stopwatch.Elapsed
MicroSeconds.Text = e.Milliseconds.ToString("00")
Seconds.Text = e.Seconds.ToString("00")
Minutes.Text = e.Minutes.ToString("00")
Hours.Text = e.Hours.ToString("00")
End Sub

关于.net - 使用调度程序计时器 + 使用 VB.NET 的秒表执行时获得不正确的计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482903/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com