我正在尝试构建一个通常不需要 super 性能的应用程序,除了键盘按下(或外部 Controller 按钮按下)的时间戳。我希望时间戳尽可能精确,最好低至 +/- 5 毫秒。这是为了科学应用。以最小的延迟实现这一目标的最佳编程范例是什么?以下哪项更可取?
(a) 创建一个以更高优先级运行的工作线程,并循环查看是否按下了某个键。使用 Sleep(x)
,其中 x
小于 5。
(b) 创建一个键盘钩子(Hook),它有一个异步回调。
(c) 另一种选择。
除了答案之外,任何代码(或示例链接)都将不胜感激,因为我是一个相当新的开发人员。
编辑:命名法。应该更加小心。时间戳是指一般时间,不一定是完整的日月年时分秒毫秒。我从一开始就计划使用 StopWatch 类,因为我需要的只是程序中事件开始与按下按钮时间之间的时间。抱歉,如果不清楚。
最佳答案
来自评论:
I am looking for the difference between the start of an event and the key press.
重要的是要了解这与尝试获取按键的实际时间戳非常不同。
这种情况正是 Stopwatch
的用途。是的,使用它并庆幸你并不是真的在尝试获取时间戳。
只需在事件开始时使用 Stopwatch.StartNew
,并在按键事件上使用 Stopwatch.Stop
。事件处理程序触发有轻微的延迟,但与其他任何东西相比这将是微不足道的 - 如果它在这里给您带来任何问题,我会感到惊讶。
关于c# - .NET : How to get time for keypress as precisely as possible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28022582/