C# Windows 서비스가 있습니다.C# Windows 서비스에 대한 OnRestart() 이벤트 리스너가 있습니까? Windows 서비스가 다시 시작되었는지 어떻게 알 수 있습니까?
protected override void OnStart(string[] args)
{
string url = "http://localhost:8080";
SignalR = WebApp.Start(url);
eventLog1.WriteEntry("Server running on " + url);
}
protected override void OnStop()
{
eventLog1.WriteEntry(LogMessage.Message);
SignalR.Dispose();
}
문제는 내 서비스 코드가 그 작업을 실행, 나는 속성이 다시 시작하도록 내 서비스에 설정 완료되면 나는
Environment.Exit(1);
을 수행하고 있다는 점이다 나는 다음과 같은 이벤트가 1 분 후 (장애가 발생한 경우). 그것이 실패 할 때 실제로 "정지"이벤트에 부딪치지 않아서 내 로그가 기록되지 않는 것 같습니다. 그런
OnRestart()
이벤트 또는 뭔가가 있나요? 서비스를 종료하기 전에 로그를 작성하는 방법을 알아 내려고 노력 중입니다. Windows의 서비스 대화 상자에서 "서비스 중지"를 수동으로 클릭하면 일반적으로 로그가 기록됩니다. 하지만 더 이상 서비스를 종료하기 위해 수동으로 중지를 클릭하지 않고 자동으로 서비스를 다시 시작하고 서비스에 오류를 발생시켜 수동으로 중지했다가 다시 시작하지 않아도됩니다.
당신은 내가 그냥 코드를 종료하기 전에
eventLog1.WriteEntry("blah blah");
을 할 수있을 것이라고 생각하지만 그것은 범위 밖이고 있기 때문에 내가 별도의 클래스에 코드를 종료하고있어 수 없습니다 :(
Environment.Exit() 서비스의 근본적으로 잘못된 것입니다. 언제 중단해야하는지 결정하는 것은 서비스 관리자입니다. 타이머를 사용하여 1 분 1 회 작업을 구현하십시오. –
더 이상 Windows 서비스를 작성하지 않습니다. 콘솔 응용 프로그램을 작성하고 [ "TopShelf"] (http://docs.topshelf-project.com/en/latest/configuration/quickstart.html)에서이를 Windows 서비스로 실행합니다. 시작시, 중지시, 예외시, 그리고 다른 것들도 지정할 수 있습니다 - 기본 서비스는 10 행의 코드 만 필요합니다. –
@HansPassant 잘못된 의견은 ** ** 사실이 아닙니다. – Yusha