【发布时间】:2019-01-19 05:11:11
【问题描述】:
我正在尝试让 Timer 的间隔小于 1 毫秒。
我的尝试:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Timer1.Interval = 0000001
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
ProgressBar1.Increment(+1)
If ProgressBar1.Value = 100 Then
Timer1.Stop()
ProgressBar1.Value = 0
MessageBox.Show("Done, 1 Ms")
End If
End Sub
当我使用“0000001”间隔时,间隔值返回“1”。
我的主要目的是让计时器以纳秒为单位运行,以使标签文本 (+1) 的速度快于 1 毫秒。我知道它每 1 秒会产生 (+1000),但我需要让它快于 1 毫秒。
那么,定时器有没有可能快于1ms?
【问题讨论】:
-
如果您实际上需要小于 1 毫秒的间隔,那么您显然不能使用 WinForms
Timer。问题是,你真的需要这样的间隔吗?它对你有什么实际用途? -
我真的需要它,这样的东西会缩短代码的速度,让计时器比.it token 花费更少的时间
-
据我所知,.net 计时器的最小间隔是一毫秒,但没有内置的计时器实现那么准确。
-
恐怕这很愚蠢。你根本不需要那个。一个人怎么能在一秒钟内识别出
Label的 1000 次变化,更不用说更多了?即便如此,它也不过是一片模糊。你所要求的既无意义又不可能。即使您要使用分辨率小于 1 毫秒的高精度计时器,您可以更新 UI 的想法通常表明您不了解这些东西是如何工作的。 WinFormsTimer的有效最小时间间隔约为 50 毫秒是有原因的。少一点没有实际用处。 -
是的,您发布了您想要的内容。这不是你需要的。即使 Timer 可以更频繁地引发事件,更新 UI 也需要时间。鉴于人类甚至无法正确识别每秒 1000 次变化,拥有更多将是无用的。这似乎是一个很酷的想法,但它完全没用。即使你能做到,你也无法区分。
标签: .net vb.net visual-studio-2012 dispatchertimer