C#windows服务并不总是在关机时停止

apa*_*ant 3 c# service windows-services

我使用c#2010创建了一个Windows服务.问题是当计算机关闭时,服务没有时间停止并且onstop并不总是在执行.我说并不总是因为有时它会设法停止.我曾尝试使用在vista中引入的Windows预关闭通知,但结果更好但不是绝对的.

无论如何让Windows等待我的服务停止?反正有没有改变订单窗口停止服务?

Jim*_*hel 7

根据http://msdn.microsoft.com/en-us/library/windows/desktop/ms685149(v=vs.85).aspx,服务通常在系统放弃和关闭之前大约需要20秒才能关闭无论如何.

如果你的服务需要更多的时间来关闭,你或许可以发STOP_PENDING回信息,但即便如此,你还是要限制在大约125秒之后,系统才能确定你永远不会关闭,并从你的下方拉出地毯.

在C#中,您将在关机期间调用RequestAdditionalTime服务.同样,不能保证你会得到额外的时间,但你可以要求它.但请记住,如果你要求更多的时间,那么最好在那个时间到期之前完成,或者你可以要求更多.但最终系统会让你失望(再次,可能在不到2分钟内).

一般来说,我发现最好是构建您的服务,以便您可以快速关闭它.如果您在几秒钟内无法关闭,则可能需要更改设计.