2011-03-09 106 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