键盘多久轮询一次 Form.KeyDown 事件?
我正在以每秒 45 帧的速度运行一个程序。这是一款游戏,因此及时的用户输入非常重要。看起来 keydown 事件有时执行得很慢?好像轮询间隔有时会变化长达 3 或 4 秒。我绝对确定实际的游戏不会滞后,而是输入滞后。 我计划转向 GetKeyState(),但我仍然想知道 KeyDown 事件的实际轮询频率。
编辑:我想我会发布一个指向我正在使用的解决方法的链接 这里。
I'm running a program at 45 frames per second. It's a game, so timely user input is important. It would seem that the keydown event sometimes performs... slowly? As if the polling interval varies by sometimes up to 3 or 4 seconds. I'm absolutely sure that the actual game isn't lagging, but rather the input is.
I plan on moving to GetKeyState(), but I'd still like to know the actual polling frequency for the KeyDown event.
EDIT: Thought I'd post a link to the workaround I'm using here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有轮询频率——Windows 使用消息系统将按键(和其他事件通知)传递给应用程序。
物理按键会触发一个中断,该中断会进入操作系统,最终向您的程序发送一条消息。
您看到的延迟可能是因为事件队列是 Windows 中的共享服务(即,当系统上有负载时,Windows 在消息发生后不久才发送消息)。不过,3-4 秒的延迟很多 - 我不确定是什么原因造成的。
有关详细信息,请参阅本文。
There is no polling frequency -- Windows uses a messaging system to deliver keypresses (and other event notifications) to applications.
The physical keypress triggers an interrupt which makes its way into the OS, which eventually sends a message to your program.
The lag you're seeing might be because of the event-queue being a shared service in Windows (i.e. Windows is sending the message a little after it occurred when there's a load on the system). 3-4 seconds is a lot of lag, though -- I'm not sure what could be causing it.
See this article for more information.