键盘多久轮询一次 Form.KeyDown 事件?

发布于 2024-10-21 02:36:53 字数 315 浏览 1 评论 0原文

我正在以每秒 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

趴在窗边数星星i 2024-10-28 02:36:53

没有轮询频率——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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文