/// <summary> /// Is task already running? /// </summary> /// <param name="scheduleTask">Schedule task</param> /// <returns>Result</returns> protected virtual bool IsTaskAlreadyRunning(ScheduledTask scheduleTask) { //task run for the first time if (!scheduleTask.LastStartUtc.HasValue && !scheduleTask.LastEndUtc.HasValue) { return(false); } var lastStartUtc = scheduleTask.LastStartUtc ?? DateTime.UtcNow; //task already finished if (scheduleTask.LastEndUtc.HasValue && lastStartUtc < scheduleTask.LastEndUtc) { return(false); } //task wasn't finished last time if (lastStartUtc.AddSeconds(scheduleTask.Seconds) <= DateTime.UtcNow) { return(false); } return(true); }
/// <summary> /// Ctor for ScheduledTaskRunner /// </summary> /// <param name="task">Task </param> public ScheduledTaskRunner(ScheduledTask task) { ScheduleTask = task; logger = Utilities.Logger; logger.SetNLogLogger("ScheduledTaskRunner"); }