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

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

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

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

为什么 ResetEvent 不会在一毫秒内超时?

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

最佳答案

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

关于vb.net - ManualResetEvent.WaitOne(1) 等待超过 1ms?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7405076/

10-15 16:46