强制窗口等待服务在关闭时停止

Kam*_*eld 6 .net c# windows windows-services

我遇到了一个我用C#编写的Windows服务无法解决的问题.我想要做的是等待一个指定的时间让子进程终止,然后我被迫杀死它并停止服务.我将超时设置为5到15秒之间的任何时间,我的服务等待适当的时间,然后杀死孩子并在我通过mmc服务窗口停止时停止.但是,如果我关闭计算机,我的服务会在能够等待和正常停止之前被吹走.我已经读过Windows允许服务在关闭之前超时30秒.我的代码执行的时间远远少于30秒,最大值约为20秒左右,具体取决于我设置的超时时间.

我尝试在win32 Api中使用SetServiceStatus()函数,但它没有改变代码的功能.我已经验证函数调用是否成功.有没有其他方法可以强制Windows等待我的服务正常关闭?我在Windows 7 x86和Windows Vista Sp1 x86中测试它.

Ana*_*tts 2

Windows 不会任何服务阻止关闭,这是设计使然。正如 Gyuri 所说,您必须考虑为您的应用程序采用不同的设计。