I am a complete beginner to working with windows services. I have a basic skeleton worked out for the service and I am currently doing this:
protected override void OnStart(string[] args)
{
base.OnStart(args);
Process.Start(@"someProcess.exe");
}
just to fire-off the exe at the start of the program.
However, I’d like to have the service stop itself when the process started from the exe quits.
I’m pretty sure I need to do some sort of threading (something I am also a beginner with), but I’m not sure of the overall outline of how this works, nor the specific way to stop a process from within itself.
Could you help me with the general process for this (i.e. start a thread from OnStart, then what…?)? Thanks.
You can use a
BackgroundWorkerfor the threading, useProcess.WaitForExit()to wait for the process to terminate until you stop your service.You’re right that you should do some threading, doing lots of work in the
OnStartmay render errors about not starting correctly from Windows when starting the service.Edit
You may also want to move the
Process pto a class member and stop the process in theOnStopto make sure that you can stop the service again if the exe goes haywire.