正在设置Windows服务';s状态
本文关键字:状态 服务 设置 Windows | 更新日期: 2023-09-27 18:28:53
我正在尝试创建一个运行我所拥有的exe的windows服务。我一直在使用msdn的这本指南。
我将exe作为Process
运行,它在OnStart
中启动,在OnStop
中停止。我想知道服务状态sc query *name*
是如何更新的。
我试着按照上面指南的状态部分,但打电话给
serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED;
SetServiceStatus(this.ServiceHandle, ref serviceStatus);
指南中的这些功能似乎没有任何作用。
如果服务运行的exe崩溃或终止,我希望能够将服务的状态设置为停止。
我想到的一个想法是,在OnStart
的线程中运行一个单独的函数,该函数将使用process.WaitForExit();
进行阻塞。在线程停止阻塞之后,我想使用上面的函数将服务状态设置为已停止。
有人知道为什么我不能设置服务状态,或者如何将服务状态链接到服务运行的exe吗?感谢
不要设置服务状态。听起来你应该在exe崩溃或被终止时停止你的服务。要停止服务,请使用ServiceBase.stop()
https://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.stop.aspx
这将把服务状态更改为已停止。