0
我正在以45幀/秒的速度運行一個程序。這是一個遊戲,所以及時的用戶輸入非常重要。這似乎是keydown事件有時執行......緩慢?就好像輪詢間隔有時會長達3或4秒一樣。我絕對相信實際的遊戲並不落後,而是投入。 我打算轉移到GetKeyState(),但我仍然想知道KeyDown事件的實際輪詢頻率。鍵盤輪詢Form.KeyDown事件的頻率是多少?
編輯:以爲我會發佈一個鏈接到我使用的解決方法here。
我正在以45幀/秒的速度運行一個程序。這是一個遊戲,所以及時的用戶輸入非常重要。這似乎是keydown事件有時執行......緩慢?就好像輪詢間隔有時會長達3或4秒一樣。我絕對相信實際的遊戲並不落後,而是投入。 我打算轉移到GetKeyState(),但我仍然想知道KeyDown事件的實際輪詢頻率。鍵盤輪詢Form.KeyDown事件的頻率是多少?
編輯:以爲我會發佈一個鏈接到我使用的解決方法here。
沒有輪詢頻率 - Windows使用消息傳遞系統將按鍵(和其他事件通知)傳遞給應用程序。
物理按鍵觸發一箇中斷,進入操作系統,最終發送消息到您的程序。
您看到的滯後可能是由於事件隊列是Windows中的共享服務(即Windows在系統負載發生後稍後發送消息)。 3-4秒是批次的滯後,但 - 我不知道是什麼原因造成的。
有關更多信息,請參閱this article。
+1。 @Bloodyaugust正在經歷的延遲可能是因爲遊戲沒有正確處理消息。 – 2011-03-09 01:16:03
@Ken:你能解釋一下它可能沒有正確處理消息嗎? .Net不是在後臺處理所有的消息處理嗎? – Cameron 2011-03-09 01:18:47
即使負載相對較低,它是否通過所述隊列是常見的? – Bloodyaugust 2011-03-09 02:06:00