2009-05-20 8 views
5

.net 2.0에서 Windows 서비스를 작성하고 있습니다.OnStart 메서드 내에서 서비스를 중지하는 방법은 무엇입니까?

어떤 이유로 서비스를 시작하지 않으려는 경우 OnStart() 방법으로 무엇을해야합니까? 기본 클래스 (ServiceBase)의 Stop() 메서드를 호출 할 수 있습니까? 나는 그것을 시도하고 재미있는 메모리 접근 예외를 얻고있다. Stop() 메서드를 호출하기 위해 별도의 스레드를 시작해야합니까?

답변

8

왜 하시겠습니까? 오류가 있으면 이벤트 로그에 기록하고 예외를 throw하십시오. 서비스가 시작되지 않고 사용자에게 문제가 발생했음을 알려줍니다.

+0

실제로 예외를 throw하면 서비스가 시작되지 않습니다. Windows Services가이 모든 것을 처리합니다. – Noldorin

+0

서비스가 시작되기를 원하지 않는 데에는 많은 이유가 있습니다! 그래서 아마도 당신은 왜 그런지 묻지 않고, 대답을 제안하는 것은 예외를 던지는 것입니다. ServiceBase.ExitCode를 설정하는 것은 어떻습니까? – Rory

+1

@Rory : 서비스 시작 실패는 바로 시작하고 중지하는 것과는 다릅니다. 나는 성공적으로 시작하고 조용히 멈추는 것에 반대한다. ExitCode는 이벤트 로그에 기록되므로 설정하는 것이 좋습니다. 그래도 필요하지는 않습니다. –

0

ServiceController를 사용하여 중지하고 즉시 중지하십시오.

0

Environment.FailFast()을 사용할 수 있습니다. try-catch-finally 블록을 무시한다는 것을 명심하십시오.

관련 문제