Windows 서비스의 System.Timers.Timer에 문제가 있습니다. 나는 기본적으로 다음 코드를 기본 폴링 서비스 클래스에 타이머를 설정 :System.Timers.Timer 다시 시작을 다시 설정하는 중
_serviceTimer.Elapsed += OnElapsedTime;
_serviceTimer.Interval = ServiceTimerInterval.TotalMilliseconds;
_serviceTimer.AutoReset = false;
_serviceTimer.Enabled = true;
OnElapsedTime 화재, 나는 타이머를 해제하고 조회에 따라 다른 값으로 간격을 설정하려는 경우. 문제는 타이머를 실제로 다시 시작하는 간격을 변경할 때입니다. 이 이상한 동작은 msndn 문서에서 다음과 같이 사용됩니다.
참고 :Enabled 및 AutoReset이 모두 false로 설정되어 있고 이전에 타이머를 사용하도록 설정 한 경우 Interval 속성을 설정하면 Elapsed 이벤트가 Enabled 속성이 true로 설정된 경우 이벤트를 발생시키지 않고 간격을 설정하려면 AutoReset 속성을 일시적으로 true로 설정할 수 있습니다. onelapsed 이벤트에서 Timer.Interval
나는이 있습니다
_serviceTimer.Enabled = false;
double newIntervalSetting = newSetting;
base._serviceTimer.AutoReset = true;
base._serviceTimer.Interval = newIntervalSetting;
base._serviceTimer.AutoReset = false;
//reenable after processing
문제는 간격 변화는 여전히 타이머 카운트 다운을 시작하고 결국 나는 변화하는 사실 이전에 자동 리셋을 설정 한 경우에도 이벤트를 발생시킵니다이다 간격. 활성화 된 상태는 항상 false이지만 이벤트는 계속 발생합니다. 나는이 작업을 수행하는 올바른 방법에 대해 msdn 문서를 오해하고 있는지 잘 모르겠습니다. 누구든지 나를 도울 수 있습니까?
그래도 비참한 수업입니다. 그래서 System.Threading.Timer가 존재하는 이유입니다. –
그래, 확실히 제한이있는 것 같습니다. 아래의 단축키를 사용하고 기회가 생기면 전환 할 것입니다. – gleasonomicon