2011-07-30 2 views
1

WPF 윈도우에서 두 GUI 이벤트 사이의 간격, 특히 Button_Click 이벤트와 Canvas_MouseLeftButtonDown 이벤트 사이의 시간 간격을 조정해야합니다. 이 간격을 측정하기 위해 System.Diagnostics.Stopwatch에 대한 호출을 사용하고 있습니다. Stopwatch 클래스는 내부적으로 매우 정확합니다 (해상도가 낮은 대안 인 DateTime.Now과는 반대). GUI가 발생시키는 이벤트와 프레임 속도의 역순의 순서 사이에 상대적으로 큰 세분성이 있다고 가정합니다 (그러나 여전히 매우 짧습니다. 인간의 스케일) 그러나 매우 빠른 클릭 (내가 관리 할 수있는 최상의 것은 50ms였습니다)에서 가상의 GUI 이벤트 지연이 중요 할 수 있습니다. 누구든지 오류 바 및 중요한 인물을 수립하기 위해 단순히 세분성을 알고 있습니까?WPF 윈도우에서 사용자 상호 작용을 정확히 타이밍하기

답변

1

GUI에 마우스 클릭을 보내기 위해 SendInput을 사용하는 것을 설정할 수 있습니다. 뭔가 같은 : 이벤트 핸들러에서

Initialize manual reset event 
Start stopwatch_1 
Send mouse click 
wait for event 
Get elapsed time of stopwatch_1 

: 기본적으로

Get elapsed time of stopwatch_1 
set event 

이 버튼을 클릭하여 테스트를 시작, 당신은 버튼 위에 마우스를 올려 수 있도록 몇 초를 지연 한 그 당신은 클릭하고 싶다.

이벤트 핸들러에서 시간을 읽으면 클릭이 수신되는 사이의 대기 시간과 실행중인 핸들러가 얼마나 많은지 알 수 있습니다. 마지막으로 읽은 총 경과 시간은 이벤트 처리기가 아무 것도하지 않기 때문에 총 오버 헤드 여야합니다. 이벤트를 처리하는 데 걸리는 시간은 빼기.

GUI 스레드에서 대기를 원하지 않는다는 것에 유의하십시오. 별도의 스레드에서 SendInput을 호출하는 메서드가 필요합니다.

+0

@ Jim Mischel - 감사 드리겠습니다. 또는,'MouseHoverTime'이 0으로 설정되었을 때 얼마나 빨리'MouseHover' 이벤트가 발생 하는지를 봄으로써 GUI 청취자 비율을 결정할 수 있다고 생각합니다. –

관련 문제