2016-06-10 4 views
1

현재 타이머 간격을 사용하는 Windows 서비스를 만들고 있습니다. 이 타이머는 매 초마다 반복하지만, 다음과 같이 생성 된 타이머의 Elapsed 이벤트 완료 1 초 이상 걸릴 수 있습니다 :기능이 완료되지 않은 경우 타이머가 계속됩니다.

Timer timer = new Timer(); 
timer.Enabled = true; 
timer.Interval = 1000; // 1 second 
timer.Elapsed += myFunction; 

을 이제 간단한 질문을 :이 타이머는하지 않았다하더라도 계속합니까 Elapsed 이벤트를 완료했거나 Elapsed 이벤트가 완료되면 타이머가 대기하고 계속 진행합니까?

답변

3

System.Timers.Timer 클래스는 AutoReset 속성이 있습니다.

false으로 설정하면 타이머가 한 번만 실행되어 완료되면 기능을 다시 시작할 수 있습니다.

true으로 설정하면 타이머가 중지되지 않고 예외가 표시되지 않는 한 매초마다 기능이 실행됩니다.

기본적으로이 속성 is set to true

3

예, 그것은

SynchronizingObject의 속성이 null의 경우, 경과 이벤트가 스레드 풀 스레드에서 발생을합니다. Elapsed 이벤트의 처리가 Interval보다 오래 지속되면 다른 ThreadPool 스레드에서 이벤트가 다시 발생합니다. 이 경우 이벤트 핸들러는 재진입 성이 있어야합니다.

Source

관련 문제