As in the following link, one can stop, start, and "stop, then start" a service using C# code.
http://www.csharp-examples.net/restart-windows-service/
I have baked a .NET service that does implement OnStart
and OnStop
. However, I need to implement a "smart restart" functionality which is more involved than just stopping and then starting. I need to keep the downtime to just a few seconds if that (but Stop + Start can take minutes in this case when done cleanly, and I must do it cleanly), and having some parts of the system available while others are rebooting/refreshing.
Long story short - before I jump into implementing this OnSmartRestart
functionality, I want to make sure that there is a fairly easy way to invoke this call from another C# application.
This feature is important, but dangerous. I want to make it fairly hidden, somewhat secure, also keep it simple, and make sure that this has negligible effect on the performance of my Windows service while it is performing its regular chores and not rebooting.
If I have to poll for some file or open a port and spend too much CPU on doing that, it would not be a good solution. I also want to keep this AS SIMPLE AS POSSIBLE (sorry for repetition).
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…