tutorial segundo quartz plano net job crear aplicacion c# cron asp.net-mvc-5 recurring hangfire

c# - segundo - hangfire vs quartz



Datos de tareas recurrentes de HangFire (1)

Estás cerca. No estoy seguro de si hay una forma mejor o más directa para obtener estos detalles, pero la forma en que lo hace es utilizar un método de extensión (agregar using Hangfire.Storage; a sus importaciones) llamado GetRecurringJobs() :

using (var connection = JobStorage.Current.GetConnection()) { var recurring = connection.GetRecurringJobs().FirstOrDefault(p => p.Id == "AccountMonthlyActionExtendPaymentSubscription"); if (recurring == null) { // recurring job not found Console.WriteLine("Job has not been created yet."); } else if (!recurring.NextExecution.HasValue) { // server has not had a chance yet to schedule the job''s next execution time, I think. Console.WriteLine("Job has not been scheduled yet. Check again later."); } else { Console.WriteLine("Job is scheduled to execute at {0}.", recurring.NextExecution); } }

Hay dos capturas:

  1. Devuelve todos los trabajos recurrentes, y necesitará seleccionar el registro apropiado del resultado
  2. Cuando crea el trabajo por NextExecution vez, la hora NextExecution todavía no está disponible (será nulo). Creo que el servidor, una vez que se conecta, revisa periódicamente las tareas recurrentes que deben programarse y lo hace; no parecen programarse inmediatamente después de la creación usando RecurringJob.AddOrUpdate(...) u otros métodos similares. Si necesita obtener ese valor de NextExecution inmediatamente después de la creación, no estoy seguro de lo que puede hacer. Eventualmente será poblado, sin embargo.

Estoy codificando una aplicación de Internet MVC 5 y estoy usando HangFire para tareas recurrentes.

Si tengo una tarea periódica mensual, ¿cómo puedo obtener el valor del próximo tiempo de ejecución?

Aquí está mi código para la tarea recurrente:

RecurringJob.AddOrUpdate("AccountMonthlyActionExtendPaymentSubscription", () => accountService.AccountMonthlyActionExtendPaymentSubscription(), Cron.Monthly);

Puedo recuperar los datos del trabajo de la siguiente manera:

using (var connection = JobStorage.Current.GetConnection()) { var recurringJob = connection.GetJobData("AccountMonthlyActionExtendPaymentSubscription"); }

Sin embargo, no estoy seguro de qué hacer a continuación.

¿Es posible obtener el próximo tiempo de ejecución de una tarea recurrente?

Gracias por adelantado.