Pregunta

Tengo una tarea que debe ejecutarse cada 30 segundos. Puedo hacer una de dos cosas:

  1. Escriba una aplicación de línea de comando que ejecute la tarea una vez, espere 30 segundos, la ejecute nuevamente y luego salga. Puedo programar esta tarea con Tareas programadas en Windows para ejecutarse cada minuto

  2. Escriba un servicio que ejecute una tarea repetidamente mientras espera 30 segundos entre cada ejecución.

El número 1 es más trivial, en mi opinión y optaría por hacerlo de manera predeterminada. ¿Estoy debilitándome? ¿Hay alguna razón por la que debería hacer de esto un Servicio y no una tarea programada? ¿Cuáles son los pros y los contras de ambos y cuál elegirías al final?

¿Fue útil?

Solución

Recientemente leí una buena publicación de blog sobre esta pregunta . Entra en muchas buenas razones por las que debería no escribir un servicio para ejecutar un trabajo recurrente. Además, esta pregunta se ha hecho antes:

https://stackoverflow.com/questions / 390307 / windows-service-vs-Scheduled-task Servicio de Windows o tarea programada, ¿cuál preferimos?

Una ventaja de usar la tarea programada es que si hay algún riesgo potencial involucrado con la ejecución del servicio, como una pérdida de memoria o una conexión de red colgada, entonces el servicio de Windows puede colgarse durante mucho tiempo, afectando negativamente a otros usuarios. Por otro lado, la tarea programada está escrita para ser de corta duración, por lo que incluso si se filtra, el efecto se minimiza.

Por otro lado, alguien en una de las preguntas anteriores comentó que el planificador tiene un límite de precisión de alrededor de 1 minuto, por lo que puede ver que el planificador no puede ejecutar su tarea cada 30 segundos con precisión.

Obviamente, hay una serie de compensaciones a considerar, pero espero que esto lo ayude a tomar una buena decisión.

Otros consejos

Si está intentando ejecutar cada 30 segundos, iría por la opción 2. En ese caso, este es un trabajo que se ejecuta de forma continua. La sobrecarga de iniciar y detener el proceso es probablemente mayor que el proceso en sí, especialmente si usa un temporizador apropiado.

Si realiza un trabajo que se ejecuta una vez al día (o varias veces al día), entonces elegiría la opción 1: usar una tarea programada.

El programador de tareas en Windows parece un poco inestable en mi opinión. Creo que obtendría un resultado más confiable como servicio.

Además, un servicio puede mantener recursos en la memoria, como leer la entrada de un archivo, y solo tiene que hacer esto al inicio del servicio, no cada 30 segundos.

30 segundos es un intervalo bastante corto (relativamente hablando) entre los ciclos de procesamiento. Al igual que los demás, tengo mis preocupaciones sobre el programador de tareas y me temo que un intervalo tan corto solo agravará los problemas que podría encontrar si adoptara ese enfoque. Si este fuera mi proyecto, seguramente iría con el servicio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top