public override void Update(TimerInfo item) { base.Update(item); Timer timer; if (_timers.TryGetValue(item.Id, out timer)) { var timespan = RecordingHelper.GetStartTime(item) - DateTime.UtcNow; timer.Change(timespan, TimeSpan.Zero); } else { AddTimer(item); } }
private void AddTimer(TimerInfo item) { var startDate = RecordingHelper.GetStartTime(item); var now = DateTime.UtcNow; if (startDate < now) { EventHelper.FireEventIfNotNull(TimerFired, this, new GenericEventArgs <TimerInfo> { Argument = item }, Logger); return; } var timerLength = startDate - now; StartTimer(item, timerLength); }
private void ScheduleWake(TimerInfo info) { var startDate = RecordingHelper.GetStartTime(info).AddMinutes(-5); try { _powerManagement.ScheduleWake(startDate); _logger.Info("Scheduled system wake timer at {0} (UTC)", startDate); } catch (NotImplementedException) { } catch (Exception ex) { _logger.ErrorException("Error scheduling wake timer", ex); } }
private void AddOrUpdateSystemTimer(TimerInfo item) { StopTimer(item); if (!ShouldStartTimer(item)) { return; } var startDate = RecordingHelper.GetStartTime(item); var now = DateTime.UtcNow; if (startDate < now) { EventHelper.FireEventIfNotNull(TimerFired, this, new GenericEventArgs <TimerInfo> { Argument = item }, Logger); return; } var dueTime = startDate - now; StartTimer(item, dueTime); }