.net 2.0에서 Windows 서비스를 작성하고 있습니다.OnStart 메서드 내에서 서비스를 중지하는 방법은 무엇입니까?
어떤 이유로 서비스를 시작하지 않으려는 경우 OnStart()
방법으로 무엇을해야합니까? 기본 클래스 (ServiceBase
)의 Stop()
메서드를 호출 할 수 있습니까? 나는 그것을 시도하고 재미있는 메모리 접근 예외를 얻고있다. Stop()
메서드를 호출하기 위해 별도의 스레드를 시작해야합니까?
.net 2.0에서 Windows 서비스를 작성하고 있습니다.OnStart 메서드 내에서 서비스를 중지하는 방법은 무엇입니까?
어떤 이유로 서비스를 시작하지 않으려는 경우 OnStart()
방법으로 무엇을해야합니까? 기본 클래스 (ServiceBase
)의 Stop()
메서드를 호출 할 수 있습니까? 나는 그것을 시도하고 재미있는 메모리 접근 예외를 얻고있다. Stop()
메서드를 호출하기 위해 별도의 스레드를 시작해야합니까?
왜 하시겠습니까? 오류가 있으면 이벤트 로그에 기록하고 예외를 throw하십시오. 서비스가 시작되지 않고 사용자에게 문제가 발생했음을 알려줍니다.
ServiceController를 사용하여 중지하고 즉시 중지하십시오.
Environment.FailFast()을 사용할 수 있습니다. try-catch-finally 블록을 무시한다는 것을 명심하십시오.
실제로 예외를 throw하면 서비스가 시작되지 않습니다. Windows Services가이 모든 것을 처리합니다. – Noldorin
서비스가 시작되기를 원하지 않는 데에는 많은 이유가 있습니다! 그래서 아마도 당신은 왜 그런지 묻지 않고, 대답을 제안하는 것은 예외를 던지는 것입니다. ServiceBase.ExitCode를 설정하는 것은 어떻습니까? – Rory
@Rory : 서비스 시작 실패는 바로 시작하고 중지하는 것과는 다릅니다. 나는 성공적으로 시작하고 조용히 멈추는 것에 반대한다. ExitCode는 이벤트 로그에 기록되므로 설정하는 것이 좋습니다. 그래도 필요하지는 않습니다. –