.NET Forms 타이머 관련.

위의 수정된 코드를 살펴보세요.

  1. System.Windows.Forms.Timer는 정확한 인터벌로 이벤트가 호출되지 않습니다. 이유는 타이머가 UI 스레드의 메시지 루프를 통해 발생하기 때문입니다.

  2. System.Windows.Forms.Timer는 이벤트 호출 메소드의 처리 시간을 고려하지 않습니다. 인터벌이 100ms이고 이벤트 콜 된 메소드의 처리시간이 100ms이라면 총 200ms이 걸립니다.

위의 1, 2의 이유 때문에 시간이 계속 밀리게 됩니다.

위의 문제를 해결하려면 PeriodicTimer를 사용하거나 제가 고친 것 처럼 Stopwatch (또는 타이머 시작 시각을 DateTime.Now 로 기록 후 변화되는 시간을 표시)를 이용할 수 있습니다.

3개의 좋아요