我正在尝试创建一个运行我拥有的exe的Windows服务。我一直在使用msdn的this guide。
我将我的exe作为Process
运行,该OnStart
在OnStop
中启动并在sc query *name*
中停止。
我想知道服务状态(状态serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED;
SetServiceStatus(this.ServiceHandle, ref serviceStatus);
)是如何更新的。
我已尝试按照上述指南的状态部分here,但调用
OnStart
指南中的那些类型的功能似乎没有做任何事情。
我希望能够设置要停止的服务的状态,如果服务运行的exe崩溃或被杀死。
我想到的一个想法是让一个单独的函数在process.WaitForExit();
的线程中运行,该线程将阻止使用{{1}}。在线程停止阻塞之后,我想使用上面的函数将服务状态设置为已停止。
有没有人知道为什么我无法设置服务状态,或者如何将服务状态链接到服务运行的exe?感谢
答案 0 :(得分:3)
不要设置服务状态。听起来你应该在exe崩溃或被杀时停止服务。 要停止服务,请使用ServiceBase.Stop()
https://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.stop.aspx
这会将服务状态更改为已停止。