Я изменил работающую службу Windows, которая всегда запускалась заранее. После добавления ссылки System.Management теперь он иногда не запускается автоматически. Я получаю следующую ошибку:
Сервис не может быть запущен. System.Runtime.InteropServices.COMException (0x80010002): вызов был отменен фильтром сообщений. (Исключение из HRESULT: 0x80010002 (RPC_E_CALL_CANCELED))
Я нашел еще одно сообщение здесь на SO с кем-то, у кого такая же проблема.
Почему моя служба Windows .Net не запускается автоматически после перезагрузки?
Однако предложенное решение заключалось в том, чтобы служба запускалась после того, как были запущены службы, от которых она зависит. Однако когда я перехожу на вкладку «Зависимости» своего сервиса, я вижу:
Должен ли я просто использовать обходной метод перевода потока в спящий режим или есть более правильный способ заставить эту службу запускаться правильно? Это происходит из-за того, что .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))