У меня есть служба TopShelf C#, которая должна восстанавливать настройки DNS адаптера при выходе. Мой стоп/старт методы работы просто отлично, и этот код работает:C# service InvokeMethod не работает во время выключения Windows
ManagementObject.InvokeMethod("SetDNSServerSearchOrder", DNS, null);
Shutdown, однако, проблема, даже с RequestAdditionalTime
, когда я захожу следующее сообщение об ошибке:
2016-11-30 15:10:53,427 [7] TRACE MyDNSService - DNSService Shutdown command received.
2016-11-30 15:10:53,677 [7] DEBUG MyDNSService - DNSService Error setting DNS: A system shutdown is in progress. (Exception from HRESULT: 0x8007045B)
Так это появляется, что ОС блокирует мой вызов до ManagementObject.InvokeMethod
Я в тупике. Есть ли способ обойти эту проблему? При запуске моя служба обнаруживает аномалию и восстанавливается, но это занимает слишком много времени. Мне бы очень хотелось, чтобы я смог закончить работу.
похоже, что вы можете найти свой ответ здесь http://stackoverflow.com/questions/5217246/how-to-delay-shutdown-and-run-a-process-in-window-service – Gurpreet
Спасибо, к сожалению, это не совсем. Метод shutdown службы выполняется отлично, это ОС, которая блокирует мой вызов, чтобы установить DNS из-за выключения ОС, а не отключения службы. – Rocky
Как насчет того, чтобы установить маркер, когда ОС возвращается и когда начинается ваша служба, он должен восстановить DNS. cuz перезагрузка DNS ни к чему не приведет, когда машина выключена. – Gurpreet