常に事前に開始していた動作中のWindowsサービスを変更しました。System.Management参照を追加した後、自動的に起動しない場合があります。次のエラーが発生します。
サービスを開始できません。System.Runtime.InteropServices.COMException(0x80010002):呼び出しがメッセージフィルターによってキャンセルされました。(HRESULTからの例外:0x80010002(RPC_E_CALL_CANCELED))
同じ問題を抱えている人とのSOに関する別の投稿をここで見つけました。
再起動後に.NetWindowsサービスが自動的に開始されないのはなぜですか?
ただし、提案された解決策は、依存するサービスが開始された後にサービスを開始することでした。ただし、サービスの[依存関係]タブに移動すると、次のように表示されます。
スレッドをスリープ状態にする回避策を使用する必要がありますか、それともこのサービスを正しく開始するためのより適切な方法がありますか?これは、サービスが開始する前に.NETが開始されていないために発生していますか?
ありがとう、
トメック
編集:例外をキャッチするためにtry-catchステートメントを追加しました。これが私のサービスのOnStart()メソッドに追加したコードです(これは例外がスローされている場所です)
try
{
_watcher = new ManagementEventWatcher(query);
_watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
_watcher.Start();
}
catch (Exception ex)
{
EventLog.WriteEntry("Could not create Sleep/Resume watcher" + ex.Message);
}
サービスは今すぐ開始されますが、私が追加した機能はありません。私は.NETを初めて使用しますが、オンラインで見つけたサンプルからウォッチャーコードを取得したので、それが正しいと確信しています。イベントログには同じ例外が表示されます。
スリープ/レジュームウォッチャーを作成できませんでした通話がメッセージフィルターによってキャンセルされました。(HRESULTからの例外:0x80010002(RPC_E_CALL_CANCELED))