0

終了時にアダプタの DNS 設定を復元する必要がある Topshelf C# サービスがあります。私の停止/開始メソッドは問題なく機能し、このコードは機能します:

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)

OSが私の呼び出しをブロックしているようですManagementObject.InvokeMethod

私は困惑しています。この問題を回避する方法はありますか? 起動時にサービスが異常を検出して回復しますが、時間がかかりすぎます。正常にシャットダウンできるようになりたいです。

4

1 に答える 1

1

ロッキー、コードの機能要素を再作成しました (何が起こっているかをログに記録しています) が、エラーが発生しません。DNSServerSearchOrder を null に設定し、それを管理オブジェクトの SetDNSServerSearchOrder メソッドに渡します。https://github.com/paulsbruce/StackOverflowExamples/blob/master/PriorityShutdown/PriorityShutdown/MyService.cs

唯一の追加の推奨事項は、サービスのシャットダウン順序の優先度を変更して、それが影響するかどうかを確認できることです。このスレッドを参照してください:システムのシャットダウン時の .NET Windows サービスの停止順序

于 2016-12-13T16:16:00.547 に答える