Pregunta

Quiero escribir un servicio de Windows que el usuario pueda programar. es decir, el usuario puede elegir ejecutar el servicio de 9:00 a. m. a 6 p. m. diariamente, o puede ejecutarlo todas las noches, comenzando desde la noche 12 en punto de la noche hasta el día siguiente mañana 6, etc. ¿Hay alguna box .NET API que me ayudará a hacer esto? Sé que puedo hacer esto usando las tareas programadas, pero ¿hay alguna forma de hacerlo mediante programación?

¿Fue útil?

Solución

Mi primera respuesta es preguntar por qué un servicio? Pero lo que es más importante, la pregunta sería ¿por qué no utilizar el potente programador que proporciona el sistema operativo?

Dicho esto, un servicio de Windows es prácticamente solo un hilo en el que se ejecuta su aplicación. Puede enviarlo en dos partes, la primera es el servicio en sí que se ejecuta en un temporizador. El inicio del servicio podría verificar un valor de registro para determinar con qué frecuencia se supone que debe ejecutarse.

La segunda parte del servicio sería una pequeña aplicación de Windows que permitiera al usuario establecer la programación y, por supuesto, escribirla en el valor de registro mencionado anteriormente.

No hay ningún tipo de API especial que necesite.

Otros consejos

He tenido buenos resultados con Quartz.NET para realizar tareas programadas dentro de un servicio de Windows. Puede hacer de todo, desde una simple programación de intervalos hasta cronogramas de estilo cron.

Si no desea que el usuario tenga que lidiar con el programador de tareas, debe escribir un programa que les permita elegir el día y la hora para ejecutar el programa, y ??luego configurar programáticamente la tarea programada para ellos . De esa manera, nunca tienen que saber específicamente qué proceso está ejecutando, y tampoco tienen que saber cómo usar el programador de tareas. Simplemente lo hacen todo desde su aplicación.

Si va a programarlo, simplemente cree un programa de consola y agregue un código al instalador que ayude al usuario a configurar una tarea programada en Windows.

Implementé algunos servicios desatendidos (Servicios de Windows escritos en c #), usando el algoritmo crontab para administrar la programación. El patrón es poderoso y flexible. Podemos crear horarios a cualquier hora que queramos, solo usando la expresión cron. Tal vez me equivoque, pero el único horario que creo que cron no cubre es si queremos el último día del mes, pero esto nunca fue un requisito para todos los servicios.

Copié el algoritmo cron de un artículo en Internet (código abierto de Atif Aziz), y lo implementé en mi clase de utilidad, trabajando maravillosamente durante años.

Ver más detalles en mi blog: Algoritmo del analizador de programación CronTab

¡Salud!

Roberto

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