ManualResetEvent.WaitOne(1)等待超过1毫秒?

时间:2011-09-13 16:12:12

标签: vb.net hid

我正在使用HID设备获取数据。下面的代码概述了我的计时机制。

Dim CANTimer as New System.Diagnostics.Stopwatch
Dim resetEvent as New Threading.ManualResetEvent(False)
....

CANTimer.Start()
ResetEvent.WaitOne(1)
CANTimer.Stop()

这个时间,我通常会得到3ms的时间,这是我期望HID传输的延迟......并且大约每4或5次迭代需要20ms。无论我将超时设置为毫秒,这些数字都不会真正改变。

为什么ResetEvent在一毫秒内没有超时?

和..更接近金属,为什么HID传输似乎需要3ms或20ms(从不15ms等)......当传输需要20ms时会发生什么?

1 个答案:

答案 0 :(得分:4)

默认情况下,Windows上的计时器分辨率仅为15.625毫秒。您可以通过设置timeBeginPeriod(1)来将其调高到一毫秒,但这会产生系统范围的影响。将超时视为真正的超时,而不是计算毫秒的方法。