Desenvolvendo uma tarefa agendada para Windows
-
05-07-2019 - |
Pergunta
Eu tenho que desenvolver um aplicativo usando C # .net que tem de ser executado uma vez por dia. Ele só funciona para no máximo um minuto, de modo a desenvolver um serviço do Windows é um exagero e uma tarefa agendada é a forma adequada.
No entanto, tenho algumas perguntas sobre como o aplicativo pode se comunicar seus resultados:
- Como faço para indicar para o agendador de tarefas que a tarefa falhou? É este via código de saída do programa?
- Como faço para registrar informações de saída? É a saída do console automaticamente capturado ou eu tenho de escrever para o visualizador de eventos explicitamente?
Solução
Em resposta às suas perguntas -
-
Se uma tarefa falha porque ele lançou uma exceção desmarcada, você verá que no visualizador de agendou tarefas, haverá um 'Último resultado' com um valor algo como
0xe0434f4d
. Alternativamente, se você retornar um código de saída que vai ser também ser mostrado na última coluna Resultado do espectador tarefa agendada. -
Escrevendo para o console por exemplo
Console.WriteLine("blah");
não vai aparecer em qualquer lugar. Você precisaria de escrever para o log de eventos ou para um arquivo de log.
Outras dicas
Se você vai a Log File maneira, você ainda pode usar Console.WriteLine("blah");
. O truque é para redirecionar o padrão Fora e Erro córregos:
StreamWriter mylog = new StreamWriter("mylog.log");
Console.SetOut(mylog);
Console.SetError(mylog);
Você também precisa liberar os buffers, muitas vezes, para garantir que o arquivo de log contém informações atuais.
Console.Out.Flush();
Este é rápida e suja, você realmente deve usar o Log de Eventos do Windows ou log4net .
AFAIK o programador apenas começa um processo. Você pode usar o log de eventos ou de outro sistema de registro para registrar as informações que você precisa para se referir a mais tarde.
Log4net é uma estrutura de log muito bom, completo. Posso altamente recomendável.