我遇到了一个问题,我无法弄清楚我用C#编写的Windows服务。我试图做的是等待一个特定的时间段来终止子进程,然后再强迫它终止并停止服务。我已将超时设置为5到15秒,我的服务会等待适当的时间,然后杀死孩子并在我通过mmc服务窗口停止时停止。但是,如果我关闭计算机,则我的服务会在能够等待并正常停止之前被吹走。我已经读过Windows允许在服务关闭之前关闭30秒的超时时间。我的代码执行时间少于30秒,最大值大约是20秒左右,这取决于我设置的超时时间。强制Windows在关闭时等待服务停止
我已经尝试在win32 Api中使用SetServiceStatus()函数,但它没有改变代码的功能。我已验证函数调用成功。有没有其他方法可以强制Windows等待我的服务正常关闭?我正在Windows 7 x86和Windows Vista Sp1 x86中测试它。
+1:*显然*这里的解决方案是让服务花费更少的时间停下来。所以许多应用程序忽略了这一点的重要性。 – 2010-01-08 17:10:19