2010-03-22 5 views
1

System.Threading.Timer에 문제가 있습니다. Windows 서비스에서 시간을 사용하여 일부 작업을 예약하고 있습니다. 타이머는 지정된 dueTime 기간 후에 콜백 실행을 시작합니다. Windows 서비스는 재부팅 후 자동으로 시작됩니다. 그러나 시스템 재부팅 후에 이상한 점을 발견했습니다. 콜백 메소드는 지정된 기간보다 3 ~ 4 분 전에 자체 실행을 시작합니다. 그러한 행동에 대한 이유는 무엇입니까? 여기 Windows 서비스의 타이머

샘플 코드이다 _timer는 멤버 변수 상영이다

TimeSpan timeToWait = this.StartTime - DateTime.Now; 
Int64 msToSleep = (Int64)Math.Round(timeToWait.TotalMilliseconds); 
_timer = new Timer(callback_method, null, msToSleep, MinutesScheduledInterval * 60000); 

- 시간 타이머 정상적으로 제 불.

+0

코드 예제가 있습니까? –

+0

이 코드와 관련된 모든 변수의 값을 로깅 해 보셨습니까? –

+0

예, 물론입니다. 여기에 포함 된 값은 예상 된 값입니다. – Markus

답변

2

부팅 후 얼마나 빨리 서비스가 시작됩니까? Windows 시간 서비스는 도메인 컨트롤러와 동기화되도록 시계를 조정할 수 있습니다. 그 전에 DateTime.Now 값을 가져갈 수 있습니다. 부팅시 BIOS를 입력하고 시계를 확인하여 먼저 진단하십시오. 서비스 종속성으로 해결하십시오.

+0

서비스 의존성이란 무엇입니까? 원격 서버에서이 작업을 수행하고 있으며 사용자가 제안한대로 수행 할 수있는 가능성이 없습니다. – Markus

+0

서비스 등록 정보의 종속성 탭. 키보드에 연결할 수 없다면 반드시 로컬 관리자가 할 수 있습니까? –

+0

현재 서비스가 의존하고있는 서비스의 예를 들어 주시겠습니까? Net Logon 서비스가 여기에 적합합니까? – Markus