net job example alternative .net scheduled-tasks

.net - job - Desarrollar una tarea programada para Windows



hangfire.net core (4)

AFAIK el programador acaba de iniciar un proceso. Puede usar el registro de eventos u otro sistema de registro para registrar la información que necesita consultar más adelante.

Tengo que desarrollar una aplicación usando C # .net que se debe ejecutar una vez al día. Solo se ejecuta durante un minuto como máximo, por lo que desarrollar un servicio de Windows es excesivo y una tarea programada es la adecuada.

Sin embargo, tengo algunas preguntas sobre cómo la aplicación puede comunicar sus resultados:

  • ¿Cómo señalo al planificador de tareas que la tarea ha fallado? ¿Esto es a través del código de salida del programa?
  • ¿Cómo registro la información de salida? ¿Se captura automáticamente la salida de la consola o debo escribir explícitamente en el visor de eventos?

Si utiliza el modo Archivo de registro , aún puede usar Console.WriteLine("blah"); . El truco consiste en redirigir los flujos de salida y error estándar:

StreamWriter mylog = new StreamWriter("mylog.log"); Console.SetOut(mylog); Console.SetError(mylog);

También necesita vaciar los almacenamientos intermedios a menudo, para asegurarse de que el archivo de registro contiene información actual.

Console.Out.Flush();

Esto es rápido y sucio, realmente debería usar el registro de eventos de Windows o log4net .


Log4net es un marco de registro completo muy bueno. Lo puedo recomendar.


En respuesta a tus preguntas -

  1. Si una tarea falla porque arrojó una excepción no verificada, verá que en el visor de tareas de Sheduled, habrá un ''Último resultado'' con un valor algo así como 0xe0434f4d . Alternativamente, si devuelve un código de salida que también se mostrará en la columna Último resultado del visor de tareas programadas.

  2. Escribir en la consola, por ejemplo Console.WriteLine("blah"); no aparecerá en ningún lado Debería escribir en el registro de eventos o en un archivo de registro.