user222427
user222427

Reputation:

C# Windows service self terminate service

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

Answers (1)

BrokenGlass
BrokenGlass

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

Related Questions