2011-03-09 52 views
0

我正在以45帧/秒的速度运行一个程序。这是一个游戏,所以及时的用户输入非常重要。这似乎是keydown事件有时执行......缓慢?就好像轮询间隔有时会长达3或4秒一样。我绝对相信实际的游戏并不落后,而是投入。 我打算转移到GetKeyState(),但我仍然想知道KeyDown事件的实际轮询频率。键盘轮询Form.KeyDown事件的频率是多少?

编辑:以为我会发布一个链接到我使用的解决方法here

回答

5

没有轮询频率 - Windows使用消息传递系统将按键(和其他事件通知)传递给应用程序。

物理按键触发一个中断,进入操作系统,最终发送消息到您的程序。

您看到的滞后可能是由于事件队列是Windows中的共享服务(即Windows在系统负载发生后稍后发送消息)。 3-4秒是批次的滞后,但 - 我不知道是什么原因造成的。

有关更多信息,请参阅this article

+1

+1。 @Bloodyaugust正在经历的延迟可能是因为游戏没有正确处理消息。 – 2011-03-09 01:16:03

+2

@Ken:你能解释一下它可能没有正确处理消息吗? .Net不是在后台处理所有的消息处理吗? – Cameron 2011-03-09 01:18:47

+0

即使负载相对较低,它是否通过所述队列是常见的? – Bloodyaugust 2011-03-09 02:06:00