2014-02-25 8 views
0

나는 많은 일 전 서비스 (WinServiceProject)를 만들어 나는이 자동으로 시작하는 것이 싶지만 지연 시간에 ... 나는 해결책을 찾았지만이 날 도와 어차피 : http://support.microsoft.com/kb/193888/en-usWindows Server 2003 및 Windows XP에서 생성 된 서비스를 어떻게 지연시킬 수 있습니까?

나는 HKEY_LOCAL_MACHINE을 \ 시스템에서 regedit를 수정 \ CurrentControlSet \ Services \ WinServiceProject하지만이 작동하지 않습니다.

여러 문자열 값 (DependOnService)을 추가하고 많은 서비스를 설정하기 전에 ...이 작동하지만 원하는 것은 없어요.

해결책은 시간이 필요하며, 많은 시간을 설정하고이 시간 이후에 서비스를 실행하십시오. 내 서비스에 코드를 추가해야한다면 할 것입니다.

감사합니다.

+0

적합하지 않지만 (문자열 서비스 명은 timeoutMilliseconds를 INT). 'OnStart()'를 호출하는 스레드가 아니라 메인 서비스 스레드에 있어야합니다. 그렇지 않으면 서비스가 성공적으로 시작되지 않는 것처럼 보일 수 있습니다. –

+0

Martin Parkin - 그렇습니다. 솔루션은 서비스를 중지하고 "x"시간을 다시 시작하도록 설정하는 코드를 추가하는 것입니다. 다시 시작하는 기능입니다. –

+0

@ManuelFdz, 답장을 바탕으로, "x"분마다 계속 서비스를해야하는지 궁금합니다. 그 맞습니까? – AWinkle

답변

0

이 코드의 문제를 해결합니다 !!

공공 정적 무효 RestartService 당신이 _N_ 초 동안 작동을 방지하기 위해 서비스 코드에 지연을 삽입 고려할 수,

{ 

     ServiceController service = new ServiceController(serviceName); 

     try 
     { 
      int millisec1 = Environment.TickCount; 
      TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); 

      service.Stop(); 
      service.WaitForStatus(ServiceControllerStatus.Stopped, timeout); 

      // count the rest of the timeout 
      //int millisec2 = Environment.TickCount; 
      timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - millisec1); 

      service.Start(); 
      service.WaitForStatus(ServiceControllerStatus.Running, timeout); 
     } 

     catch 
     { 
      // ... 
     } 

    }