Possível duplicata:
Como fazer o TaskScheduler falhar quando a tarefa retornar resultado diferente de 0
Tenho uma tarefa do Windows agendada que executa um aplicativo de console (arquivo .exe) que escrevi. Eu configurei a tarefa para tentar novamente após 5 minutos, até 3 vezes em caso de falha.
O agendador de tarefas sempre vê a tarefa como concluída com sucesso. Mesmo quando o aplicativo lança uma exceção.
Existe uma maneira de retornar algo do aplicativo quando uma exceção é exibida para informar à tarefa que ela falhou. Por exemplo e ExitCode?
Ou existe uma maneira melhor de configurar a tarefa para que eu possa informar que houve um erro?
Responder1
Se possível, você poderia tentar configurar outra tarefa agendada, alguns minutos depois, que verificaria se a tarefa anterior teve o efeito desejado (verificando se o X está rodando corretamente, se a variável X vale o que você deseja, se o arquivo X a última modificação é hoje, etc.) e se não, faça a mesma tarefa da primeira.
Meu palpite é que o recurso "nova tentativa em caso de falha" é "se o agendador de tarefas não conseguir iniciar a tarefa". Se isso acontecesse, e o programa lançado estivesse com defeito, "não é problema dele". Você pede para ele lançar, e ele lança, ponto final. É assim que eu entendo.
Portanto, acho que a melhor maneira é configurar uma ou mais tarefas adicionais que executarão uma verificação.
Se o que você está fazendo (digamos, carregar um arquivo) não pode ser verificado diretamente, você pode tentar informar ao aplicativo que você inicia, se possível, para registrar cada um de seus resultados ou datas de operações bem-sucedidas.
Se não for possível, talvez existam outros aplicativos que possam monitorar um programa e produzir o que ele faz. Aplicativo que você iniciaria também com a primeira tarefa. Fica complicado, mas. :/