设置Windows服务的状态

时间:2016-01-04 19:21:47

标签: c# windows-services status

我正在尝试创建一个运行我拥有的exe的Windows服务。我一直在使用msdn的this guide

我将我的exe作为Process运行,该OnStartOnStop中启动并在sc query *name*中停止。 我想知道服务状态(状态serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED; SetServiceStatus(this.ServiceHandle, ref serviceStatus); )是如何更新的。

我已尝试按照上述指南的状态部分here,但调用

OnStart

指南中的那些类型的功能似乎没有做任何事情。

我希望能够设置要停止的服务的状态,如果服务运行的exe崩溃或被杀死。

我想到的一个想法是让一个单独的函数在process.WaitForExit();的线程中运行,该线程将阻止使用{{1}}。在线程停止阻塞之后,我想使用上面的函数将服务状态设置为已停止。

有没有人知道为什么我无法设置服务状态,或者如何将服务状态链接到服务运行的exe?感谢

1 个答案:

答案 0 :(得分:3)

不要设置服务状态。听起来你应该在exe崩溃或被杀时停止服务。 要停止服务,请使用ServiceBase.Stop()

https://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.stop.aspx

这会将服务状态更改为已停止。