Reputation:
How do you have a service self terminate?
Environment.Exit will cause the app to start but the service stays running.
Any idea?
Upvotes: 7
Views: 10575
Reputation: 161012
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()
.
Upvotes: 16