2009-02-03 9 views
47

Estoy buscando una biblioteca C#, preferiblemente de código abierto, que me permita programar tareas con una buena cantidad de flexibilidad. Específicamente, debería poder programar cosas para que se ejecuten cada N unidades de tiempo, así como "Todos los días laborables a la hora XXXX" o "Todos los lunes a la hora XXXX". Más características que eso serían agradables, pero no necesarias. Esto es algo que quiero usar en Azure WorkerRole, que inmediatamente descarta las tareas programadas de Windows, "at", "Cron" y cualquier aplicación de terceros que requiera la instalación y/o una GUI para operar. Estoy buscando una biblioteca.Recomiende una biblioteca de programación de tareas C#

+1

Salida del Programador de Azure disponible de forma nativa, introducido en 2014 - http://azure.microsoft.com/en-us/services/scheduler/ – mvark

Respuesta

55

http://quartznet.sourceforge.net/

"Quartz.NET es un puerto de muy propular (sic!) De código abierto de Java planificación de tareas, cuarzo".

PS: Palabra al respecto, no intente simplemente navegar a quartz.net cuando en el trabajo ;-)

+0

es quartz.net utiliza el programador de Windows o los temporizadores para la programación? –

+1

pero no admite asincronización/espera fuera de la caja. –

+1

Tiene un error grave, si tiene 20 tareas y 5 subprocesos en el grupo, ejecuta primero las primeras tareas con mayor frecuencia y los tsits latst solo se ejecutan una vez por unos minutos en lugar de una vez cada 15 segundos, tal como lo pedí. Y como mencionó @ michael-sync, no es compatible con async/await. –

3

Quartz parece una buena solución.

Recientemente (este año) tuve que escribir un planificador de tareas personalizado en un proyecto importante en el que estaba trabajando. Ellos tampoco podían usar el Programador de tareas de Windows, y también querían la posibilidad de ejecutar funciones personalizadas en virtud de la carga de ensamblados (a través de un sitio web ASP.net) y hacer que el servicio ejecutara la tarea adecuada en el momento especificado.

La cosa era honestamente una pesadilla (no tanto para diseñar e implementar, pero la lógica de programación era un poco molesta).

Recomiendo encarecidamente agotar todas las otras vías antes de decidir "hacer las suyas" (¡por ejemplo, reinventar la rueda!).

7

Utilicé Quartz en mis días de Java y funcionó muy bien. Ahora lo estoy usando para algunos trabajos de .Net y funciona aún mejor (por supuesto, hay varios años para que se haya estabilizado). Así que sin duda secundaré las recomendaciones para ello.

Otra cosa interesante que debes tener en cuenta, con la que acabo de empezar a jugar es el nuevo System.Threading.Tasks en .Net 4.0. Acabo de utilizar las tareas para paralelizar el trabajo y toma una gran ventaja de los núcleos múltiples/procesadores. Noté que hay una clase llamada TaskScheduler, no la he examinado en detalle, pero tiene métodos como QueueTask, DeQueTask, etc. Puede valer la pena investigar al menos.

1

Hay un nuevo programador basado en la nube de Aditi Technologies llamado Scheduler.

Programador permite a los desarrolladores para programar la ejecución de tareas a través de WebHooks HTTP que se ejecutan en horarios CRON simples o complejos.

Cuestiones relacionadas