C#服务InvoKeMethod在Windows关闭期间失败



我有一个顶架C#服务,该服务必须在退出时还原适配器DNS设置。我的停止/启动方法正常工作,此代码有效:

ManagementObject.InvokeMethod("SetDNSServerSearchOrder", DNS, null);

关闭是一个问题,即使使用RequestAdditionalTime

i记录以下错误:

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)

因此,OS似乎阻止了我对ManagementObject.InvokeMethod

的呼叫

我被困住了。有解决这个问题的方法吗?在启动时,我的服务检测到异常并恢复,但这需要太长。我真的很想优雅地关闭。

岩石,我只是重新创建了代码的功能元素(记录发生的事情),但我没有遇到错误。我将DNSServersearchOrcher设置为null并将其馈送到管理对象的SetDNSServersearchOrchOder方法中。https://github.com/paulsbruce/stackoverflowexamples/blob/master/priorityshutdown/priorityshutdown/myservice.cs

我唯一的建议是,您可以尝试更改服务关闭顺序的优先级,以查看是否有任何效果。请参阅此线程:.NET Windows Services停止订单时系统关闭

最新更新