public bool IsActual() { var lastHit = lastUpdated.GetLastHitIfHitted(); if (!lastHit.HasValue) { return(false); } return((DateTime.Now - lastHit.Value).TotalMilliseconds <= updateTimeoutMils); }
public DailySchedule( Action <object> actionOnObj, int minMilsBetweenCheck, object passedObject, int hourStart, int hourEnd, int minuteStart, int minuteEnd, string logMessageThenExecuted) { minMilsBetween = minMilsBetweenCheck; this.passedObject = passedObject; actionOnPassedObject = o => { if (DateTime.Now.Hour < hourStart || DateTime.Now.Hour > hourEnd || DateTime.Now.Minute < minuteStart || DateTime.Now.Minute > minuteEnd) { return; } var lastTime = lastTimeDailyRoutineExecuted.GetLastHitIfHitted(); if (lastTime.HasValue && lastTime.Value.Date == DateTime.Now.Date) { return; } if (!string.IsNullOrEmpty(logMessageThenExecuted)) { Logger.Info(logMessageThenExecuted); } try { actionOnObj(o); } finally { lastTimeDailyRoutineExecuted.Touch(); } }; }