public AspNetJobWrapper(string pattern, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling) { Pattern = pattern; Type = null; Handler = handler; OverlapHandling = overlapHandling; }
public static Guid Schedule(this IJobScheduler scheduler, Action handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { return(scheduler.Schedule((context) => { handler(); return Task.FromResult(0); }, overlapHandling)); }
public ScheduledJob(string pattern, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling) { if (string.IsNullOrWhiteSpace(pattern)) { throw new ArgumentException("No pattern was specified.", nameof(pattern)); } if (handler == null) { throw new ArgumentNullException(nameof(handler), "No handler was specified."); } if (pattern == "@immediately") { _cron = null; _next = DateTime.UtcNow; } else if (pattern.StartsWith("@once ")) { var value = pattern.Remove(0, 6); _cron = null; _next = DateTime.Parse(value); } else { _cron = CronExpression.Parse(pattern, CronFormat.IncludeSeconds); _next = _cron.GetNextOccurrence(DateTime.UtcNow); } Id = Guid.NewGuid(); Pattern = pattern; Type = null; Handler = handler; IsImmediately = (pattern == "@immediately"); IsOnce = pattern.StartsWith("@once "); IsAnonymous = true; OverlapHandling = overlapHandling; }
public OverlapAttribute(OverlapHandling handling) { Handling = handling; }
public static IServiceCollection AddTempusJob(this IServiceCollection services, Action <JobExecutionContext> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { Func <JobExecutionContext, Task> funcHandler = (context) => { handler(context); return(Task.CompletedTask); }; return(AddTempusJob(services, funcHandler, overlapHandling)); }
public static IServiceCollection AddTempusJob(this IServiceCollection services, string pattern, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { services.AddTransient <AspNetJobWrapper>(provider => new AspNetJobWrapper(pattern, handler, overlapHandling)); return(services); }
public static IServiceCollection AddTempusJob(this IServiceCollection services, string pattern, Func <Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { Func <JobExecutionContext, Task> funcHandler = (context) => handler(); return(AddTempusJob(services, pattern, funcHandler, overlapHandling)); }
public static IServiceCollection AddTempusJob(this IServiceCollection services, DateTime when, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { services.AddTransient <AspNetJobWrapper>(provider => new AspNetJobWrapper($"@once {when:O}", handler, overlapHandling)); return(services); }
public Guid Schedule(string pattern, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { if (handler == null) { throw new ArgumentNullException(nameof(handler)); } var job = _jobs.Add(pattern, handler, overlapHandling); return(job.Id); }
public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Func <Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { return(scheduler.Schedule(when, async(context) => { await handler(); }, overlapHandling)); }
public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Action <JobExecutionContext> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { return(scheduler.Schedule(when, (context) => { handler(context); return Task.FromResult(0); }, overlapHandling)); }
public static Guid Schedule(this IJobScheduler scheduler, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { return(scheduler.Schedule("@immediately", async(context) => { await handler(context); }, overlapHandling)); }
public static Guid Schedule(this IJobScheduler scheduler, DateTime when, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { return(scheduler.Schedule($"@once {when:O}", async(context) => { await handler(context); }, overlapHandling)); }
public IScheduledJob Add(string pattern, Func <JobExecutionContext, Task> handler, OverlapHandling overlapHandling = OverlapHandling.Allow) { var job = new ScheduledJob(pattern, handler, overlapHandling); _locker.EnterWriteLock(); try { _jobs.Add(job); } finally { _locker.ExitWriteLock(); } return(job); }