[英]C# service InvokeMethod fails during Windows shutdown
我有一個Topshelf C#服務,退出時必須還原適配器DNS設置。 我的stop / start方法工作正常,此代碼有效:
ManagementObject.InvokeMethod("SetDNSServerSearchOrder", DNS, null);
但是,即使使用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
調用
我受阻了。 有沒有解決這個問題的方法? 在啟動時,我的服務會檢測到異常並恢復,但這花費的時間太長。 我真的很想能夠正常關機。
洛基,我只是重新創建了代碼的功能元素(記錄正在發生的事情),但是我沒有得到錯誤。 我將DNSServerSearchOrder設置為null並將其提供給管理對象的SetDNSServerSearchOrder方法。 https://github.com/paulsbruce/StackOverflowExamples/blob/master/PriorityShutdown/PriorityShutdown/MyService.cs
我唯一的附加建議是,您可以嘗試更改服務關閉順序的優先級,以查看是否有任何效果。 請參見以下線程: 系統關閉時,.NET Windows Services停止命令
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.