Я делал некоторое обширное тестирование службы Windows, которую я писал в.Net 3.5 C#. Я испытываю затруднения, заставляя Windows дать мне достаточно времени для моего сервиса для завершения работу правильно, когда я перезапускаю или завершаю работу компьютера даже при том, что я вызов RequestAdditionalTime () метод, который должен обновить SCM и поддерживать мой сервис в рабочем состоянии. Мой код работает правильно, если я вручную останавливаю сервис как бы то ни было. Я, прежде всего, тестировал этот код в Windows Vista и Windows 7 после решения протестировать код в Windows XP, все работало отлично. Кто-либо знает, почему этот вызов не работает в Vista/7? Я думаю, что мне нужно некоторое разрешение помешать системе закрывать это, я добираюсь по умолчанию в Xp, но не в Vista/7.
]Если система не отключается, ваша служба может запросить дополнительное время, и ваш процесс не будет прерван.[
] []Если система отключается, ваша служба должна быть отключена. Вы не получите даже обычных 30 секунд, которые обычно получает сервис. Выключение более мощное, чем раньше.[
]В случае не выключения функция RequestAdditionalTime() должна вызываться чаще, чем каждые 2 минуты:
protected override void OnStop()
{
Thread.Sleep(60000);
RequestAdditionalTime(180000);
Thread.Sleep(60000);
RequestAdditionalTime(180000);
Thread.Sleep(5000);
}
Обратите внимание, что, несмотря на название, параметр времени является общим запрашиваемым временем выключения.