У меня возникла проблема, которую я не могу выяснить относительно службы Windows, написанной на C #. Я пытаюсь дождаться завершения определенного дочернего процесса, прежде чем я буду вынужден остановить его и остановить службу. Я установил тайм-аут на время от 5 до 15 секунд, и моя служба ожидает соответствующее количество времени, а затем убивает ребенка и останавливается, когда я останавливаю его через окно службы MMC. Однако, если я выключаю компьютер, моя служба срывается, прежде чем она сможет ждать и останавливаться должным образом. Я читал, что Windows допускает тайм-аут в 30 секунд для отключения службы, прежде чем она срывается. Мой код выполняется намного быстрее, чем 30 секунд, максимум около 20 секунд или около того, в зависимости от того, какое время ожидания я установил.
Я пытался использовать функцию SetServiceStatus () в Win32 Api, но она не изменила функцию кода. Я проверил, что вызов функции выполняется успешно. Есть ли другой способ заставить Windows дождаться корректного завершения работы моей службы? Я тестирую его в Windows 7 x86 и Windows Vista Sp1 x86.