How do you have a service self terminate?
Environment.Exit will cause the app to start but the service stays running.
Any idea?
You can use the SCM to shut down your service from within the service itself:
System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService");
svc.Stop();
Edit:
The other option is to call ServiceBase.Stop() in your service - if you have access to your ServiceBase
derived class instance that would be the cleaner way to go - in many cases it is cumbersome though having to pass this dependency around.
If you have an uncaught exception I personally would just let the service crash (or log it and then throw
), which will leave a message in the event log detailing the termination reason. If you absolutely need to you can catch the Exception, and then call ServiceBase.Stop()
.