Сервис - как поймать код выхода - PullRequest
0 голосов
/ 31 октября 2011

Я хотел бы спросить о службах Windows. Мой сервисный код выглядит следующим образом:

try
{
  //...
}
catch
{
  Environment.ExitCode = 1;
}

После установки службы я использую систему планирования для запуска службы в определенное время:

net start MyService
//or
sc start MyService

Итак, мой вопрос: как получить информацию, если у меня было исключение? Есть ли команда, чтобы получить эту информацию? Теперь я обычно запускаю свое приложение, затем через 10 минут. остановка сервиса. Я хочу выполнить промежуточную задачу планирования, которая сообщит мне, если в приложении произошла ошибка. Я перепробовал все варианты "sc" - но он дает только информацию об услуге.

контрсилы:

  • Я не могу регистрировать ошибки и исключения в журнале событий или файлах
  • Предпочитаю не менять мой код
  • В системе расписаний я могу использовать сценарии летучих мышей (так что этот сценарий - единственное место, где я могу что-то изменить)

Ответы [ 2 ]

1 голос
/ 31 октября 2011

Стандартным способом является регистрация ошибок и исключений в журнале событий - либо конкретный, который вы создаете для своей службы, либо просто использование службы в качестве нового источника для журнала событий.

Вы можете использовать WMI для периодической проверки журнала событий на наличие ошибок.

0 голосов
/ 31 октября 2011

Если вы не можете войти в журнал событий, можете ли вы создать свой собственный «журнал событий»? Использование таблицы файлов или базы данных, которую промежуточные сервисные опросы периодически могут выполнять в ваших целях.

...