为什么RequestAdditionalTime()方法不能在Vista / 7中重启?

我一直在对我用C#.Net 3.5编写的Windows服务进行一些广泛的测试。 我无法让Windows给我足够的时间让我的服务在我重新启动或关闭计算机时正常关闭,即使我正在调用RequestAdditionalTime()方法,它应该更新SCM并保持我的服务运行。 如果我手动停止服务,我的代码可以正常工作。 我主要是在Windows Vista和Windows 7中测试此代码,在决定在Windows XP中测试代码时,一切都运行得很好。 有谁知道为什么这个电话在Vista / 7中不起作用? 我想我需要某种权限来保持系统不会关闭我默认在Xp中但不在Vista / 7中。

如果系统没有关闭,您的服务可以请求额外的时间,您的过程不会被杀死。

如果系统正在关闭,则必须关闭服务。 你甚至没有获得服务通常获得的正常30秒。 关机比以前更有力。

在非关闭的情况下,必须比每2分钟更频繁地调用RequestAdditionalTime():

protected override void OnStop() { Thread.Sleep(60000); RequestAdditionalTime(180000); Thread.Sleep(60000); RequestAdditionalTime(180000); Thread.Sleep(5000); } 

请注意,尽管名称,时间参数是请求的总关闭时间。