【发布时间】:2021-11-12 17:52:57
【问题描述】:
我正在使用以下代码来控制标签以输出秒表。按钮正常工作,标签输出的信息大多正确,但它只会每隔一段时间更新一次,我希望标签每毫秒更新一次信息。
Private SW As New Stopwatch
Dim timercount As Integer = 1 'The number of seconds
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
SW.Start()
Timer1.Start()
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Timer1.Enabled = False 'Stop the timer
timercount = 0 'Reset to 0 seconds
Label10.Text = "00:00:00.000"
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim ts As TimeSpan = SW.Elapsed
Label10.Text = ts.ToString("hh\:mm\:ss\.fff")
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Timer1.enabled = False
End Sub
非常感谢任何帮助。
【问题讨论】:
-
每毫秒 ?那么您在计时器上设置的时间间隔是多少?请参阅文档中的备注部分docs.microsoft.com/en-us/dotnet/api/…
-
您的显示器的刷新率是否为 1000 Hz?以每秒 30 次的速度更新显示的值会更合理,但会将值显示为最接近的毫秒。
-
每秒 30 次可能没问题,但现在它似乎正在跳过几秒钟的显示。它从“00:00:00.000”到“00:00:00.986”再到“00:00:01.199”,所以它至少不是每秒都显示。
-
每秒两次可能没问题,并且会使您的应用方式更好地使用资源...
-
请注意,您将受制于 Windows 计时器分辨率;默认分辨率在 15 到 16 毫秒之间。您可以在 Bruce Dawson 的博客文章中阅读有关计时器分辨率规则的更多信息:randomascii.wordpress.com/2020/10/04/…