【问题标题】:Make Timer interval less than 1 ms .Net使定时器间隔小于1毫秒.Net
【发布时间】: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 的想法通常表明您不了解这些东西是如何工作的。 WinForms Timer 的有效最小时间间隔约为 50 毫秒是有原因的。少一点没有实际用处。
  • 是的,您发布了您想要的内容。这不是你需要的。即使 Timer 可以更频繁地引发事件,更新 UI 也需要时间。鉴于人类甚至无法正确识别每秒 1000 次变化,拥有更多将是无用的。这似乎是一个很酷的想法,但它完全没用。即使你能做到,你也无法区分。

标签: .net vb.net visual-studio-2012 dispatchertimer


【解决方案1】:

好吧,我认为这是不可能的,但如果你只是想加快事件的传递,你可以尝试在一个间隔内多次调用相同的函数。由于多种原因,这不会是准确的,但它确实会渗出。如果您计划调用函数 100s 或 1000s 或时间,则另一个问题可能是事件可能与下一个刻度重叠。这取决于 CPU 的强度。这可能是也可能不是缺点。您可以添加Timer.Stop();Timer.Start();,但这会限制您可以拥有的最大速度,并且还会进一步降低准确性。

【讨论】:

    【解决方案2】:

    很遗憾,这是不可能的。有关此问题的更多信息,请参阅this msdn postStopWatch 对象可用于准确地测量,但我们没有看到Timer 的滴答事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多