una tiempo tasks tareas servicio segundo scheduled programadas programa proceso plano metodo hora ejecutar determinada demonio cierto cada automatico c# windows scheduled-tasks server

tiempo - scheduled tasks c#



¿Debo usar un programa de consola siempre en ejecución en el servidor para hacer la tarea? (2)

En un servidor tiene poco o ningún control sobre la aplicación. Por ejemplo, si el servidor se reinicia (debido a las actualizaciones instaladas, por ejemplo), debe reiniciar la aplicación manualmente.

Si solo tienes esta aplicación, te recomiendo que sea un servicio de Windows. Es increíblemente simple de hacer en C #. Si necesita múltiples tareas a largo plazo, tener múltiples servicios (tal vez incluso en varios servidores) puede ser bastante complicado.

Lo que quiero lograr es bastante simple, y se puede lograr con un programa de consola siempre en ejecución como el siguiente:

class Program { static void Main(string[] args) { while (true) { DateTime now = DateTime.Now; if(now==timeToRunTask) runMyTask();//e.g. send an email to Joe } } }

Me pregunto si este enfoque es muy ineficiente en términos de lo que estoy tratando de lograr. Y vi información sobre el uso del Programador de tareas, así que me pregunto si debería usarlo. Estoy usando Windows Server. Pero me gustaría saber por qué no debería usar el enfoque anterior primero. ¡Gracias!


Incluso si sigue con este enfoque, aún necesita una forma de iniciar la aplicación de la consola. No puede simplemente iniciar sesión y ejecutarla, ya que terminará cuando cierre sesión.

El enfoque más simple es utilizar las herramientas que proporciona Windows, en este caso el Programador de tareas. Puede configurar una tarea para iniciar su aplicación en un intervalo. Luego, en la aplicación, simplemente ejecute la tarea una vez y salga.

Si realmente necesita que la aplicación se ejecute indefinidamente, le recomiendo pasar de una aplicación de consola a un Servicio de Windows.