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

时间:2010-01-06 05:04:49

标签: c# .net windows-7 windows-services windows-vista

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

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

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