Разработка запланированной задачи для Windows
Мне нужно разработать приложение, использующее С#.net, которое нужно запускать один раз в день. Он работает не более одной минуты, поэтому разработка службы Windows является чрезмерной, и запланированная задача является подходящим способом.
Однако у меня есть несколько вопросов о том, как приложение может сообщить свои результаты:
- Как указать планировщику задач, что задача не выполнена? Это через код выхода программы?
- Как регистрировать выходные данные? Является ли вывод консоли автоматически захваченным или мне нужно явно писать в средство просмотра событий?
Ответы
Ответ 1
В ответ на ваши вопросы -
-
Если задача завершилась неудачно, потому что она исключила исключение, вы увидите, что в средстве просмотра Sheduled Task появится "Last Result" со значением, что-то вроде 0xe0434f4d
. Альтернативно, если вы вернете код выхода, который также будет отображаться в столбце "Последний результат" средства просмотра запланированной задачи.
-
Запись на консоль, например. Console.WriteLine("blah");
нигде не появится. Вам нужно будет записать в журнал событий или в файл журнала.
Ответ 2
Если вы переходите к файлу журнала, вы все равно можете использовать Console.WriteLine("blah");
. Хитрость заключается в перенаправлении стандартных потоков Out и Error:
StreamWriter mylog = new StreamWriter("mylog.log");
Console.SetOut(mylog);
Console.SetError(mylog);
Вам также необходимо регулярно очищать буферы, чтобы файл журнала содержал текущую информацию.
Console.Out.Flush();
Это быстро и грязно, вы действительно должны использовать журнал событий Windows или log4net.
Ответ 3
AFAIK планировщик просто запускает процесс. Вы можете использовать журнал событий или другую систему ведения журнала для записи информации, необходимой для дальнейшего использования.
Ответ 4
Log4net - очень хорошая, полная структура ведения журнала. Я могу очень рекомендовать его.