2009-12-06 5 views
0

Windows 서비스의 Application.Restart()와 같은 서비스에서 Windows 서비스를 다시 시작할 수있는 방법이 있습니까? 서비스에서 다른 프로세스를 시작하여 서비스를 다시 시작하지 않으려합니다.서비스에서 Windows 서비스 다시 시작

+1

이미 답변 됨 : http://stackoverflow.com/questions/220382/how-can-a-windows-service-programmatically-restart-itself – bobbymcr

답변

1

나는 Daemoniq이라는 오픈 소스 Windows 서비스 호스팅 프레임 워크의 개발자입니다. Setting service recovery options은 기능 중 하나입니다. 당신은 http://daemoniq.org

현재 기능에서 다운로드 할 수 있습니다 포함의 app.config

  • 실행을 통해 서비스 명, 나 displayName, 설명 및 serviceStartMode 같은 CommonServiceLocator
  • 설정 일반 서비스 속성을 통해

    • 컨테이너 불가지론 서비스 위치 동일한 프로세스에서 여러 Windows 서비스
    • app.config를 통해 복구 옵션 설정
    • 서비스 설정 명령 줄을 통해
    • 설치 명령 줄, 제거, 디버그 서비스를 통해의 app.config
    • 설정 서비스 프로세스 자격 증명을 통해

    감사에 의존!

  • 0

    설정 프로젝트에서 사용자 지정 작업의 커밋 폴더에 사용자 지정 작업을 추가 할 수도 있습니다. [RunInstaller (true)] 특성을 사용하여 System.Configuration.Install.Installer에서 상속 된 클래스가있는 클래스 라이브러리 프로젝트의 기본 출력이어야합니다. 이 클래스에서는 하나의 기본 메소드를 재정의해야합니다.

    public override void Commit(IDictionary savedState) 
        { 
         base.Commit(savedState); 
         ProcessStartInfo psi = new ProcessStartInfo("sc", "failure \"You service name\" reset= 60 actions= restart/1000"); 
         psi.CreateNoWindow = true; 
         Process proc = Process.Start(psi); 
         proc.WaitForExit(); 
        } 
    

    오류가 발생하면 자동으로 다시 시작하도록 서비스를 구성합니다.

    당신이 당신의 서비스를 다시 시작해야 할 때

    Environment.FailFast("Self restarting service..."); 
    

    을 수행 할 수 있습니다하지만 하나의 단점이있다보다 -이 이벤트 로그에 오류 메시지가 발사됩니다.

    관련 문제