2011-07-03 3 views
1

C#에서 작은 타이핑 테스트를하고 있는데, 프로그램에서 단어를 입력 한 다음 시간을 알려줍니다. C# 타이머 클래스 (도구 상자에서 타이머를 끌어서 놓기)를 사용했지만 눈금이 1ms 였지만 정확한 결과를 제공하지 못해 StopWatch로 대체되었으므로 타이밍이 매우 빨라졌습니다. 정확하지만 문제는 StopWatch에 이벤트 핸들러를 할당 할 수 없다는 것인데, 사용자가 단어를 마침으로써 그 사람의 시간을 표시 할 수는 있지만 입력하는 동안 실제로는 험을 표시 할 수 없습니다. 생각 하시겠습니까?C# High accuracy Timing

답변

3

초마다 이벤트를 발생시키고 Stopwatch 값을 폴링하는 다른 타이머를 사용하십시오. 스톱워치만큼 정확하지는 않지만 지연이 있기 때문에 인간은 실제로 10 분의 1 초보다 빠른 속도로 반응 할 수 없습니다.

+0

완벽하게 작업했습니다. – 7VoltCrayon

4

시간을 정확하게 측정하려면 StopWatch를 사용하십시오. Timer를 사용하여 주기적으로 UI 업데이트를 실행하고 StopWatch가 측정 한 시간을 표시합니다. UI의 경우 1ms 해상도가 필요하지 않습니다 (화면 업데이트 시간이 1ms보다 길어질 수 있으며 인간의 눈으로는 빠른 속도로 업데이트를 인식 할 수 없습니다).

각 40-100 ms마다 업데이트를 시도하십시오. 적절하다고 생각합니다.

2

System.Timers.Stopwatch 클래스를 사용하고 IsHighResolution (System.Timers.Stopwatch.IsHighResolution == true) 필드를 확인하여 고해상도를 사용할 수 있는지 확인하십시오.

그런 다음 해고가 필요한 경우 가장 낮은 간격으로 다른 타이머를 통해이를 터뜨리십시오.이 타이머는 Stopwatch의 값을 확인합니다. 이것이 완벽하지는 않을지라도 (완벽 할 필요는 거의 없습니다.) 작동합니다.

+0

속성이 이미 부울 값이므로 true와 명시 적 비교가 필요하지 않습니다. – Joey

+0

감사합니다. 나를 위해 충분히 잘했습니다. – 7VoltCrayon

관련 문제