2011-03-09 2 views
0

나는 초당 45 프레임으로 프로그램을 운영하고있다. 그것은 게임이므로 적시에 사용자 입력이 중요합니다. keydown 이벤트가 때때로 수행하는 것처럼 보일 것입니다 ... 천천히? 마치 폴링 간격이 최대 3 ~ 4 초까지 변하는 것 같습니다. 나는 실제 게임이 뒤쳐져 있지 않다는 것을 절대적으로 확신하지만, 오히려 그 입력이있다. GetKeyState()로 이동할 계획이지만 KeyDown 이벤트의 실제 폴링 빈도를 알고 싶습니다.Form.KeyDown 이벤트에 대해 키보드를 얼마나 자주 폴링합니까?

편집 : 해결 방법에 대한 링크를 게시하겠다고 생각합니다. here을 사용하고 있습니다.

답변

5

폴링 빈도 없음 - Windows는 메시징 시스템을 사용하여 키 누르기 (및 기타 이벤트 알림)를 응용 프로그램에 전달합니다.

물리적 인 키 누르기는 OS로 들어가는 인터럽트를 트리거하여 결국 프로그램에 메시지를 보냅니다.

Windows에서 공유 대기중인 이벤트 대기열 (시스템에 부하가 걸렸을 때 Windows가 약간의 메시지를 보내는 중) 때문에 지연이 발생할 수 있습니다. 3 ~ 4 초가 제비 뽑기인데, 그 원인을 알 수는 없습니다.

자세한 내용은 this article을 참조하십시오.

+1

+1. @Bloodyaugust가 지연되는 것은 아마도 게임이 메시지를 제대로 처리하지 못하기 때문일 것입니다. –

+2

@Ken : 메시지를 제대로 처리하지 못하는 이유를 설명해 주시겠습니까? 배후에서 모든 메시지 처리를 처리하는 .NET이 아닌가요? – Cameron

+0

상대적으로 낮은 부하에서도 대기열을 지체하는 것이 일반적입니까? – Bloodyaugust

관련 문제