public ScheduledItem ScheduleOnce(Action <TimerState> timerUpdateEvent, long delayMs)
 {
     TimerEventScheduler.TimerEventSchedulerItem timerEventSchedulerItem = new TimerEventScheduler.TimerEventSchedulerItem(timerUpdateEvent)
     {
         delayMs = delayMs
     };
     this.Schedule(timerEventSchedulerItem);
     return(timerEventSchedulerItem);
 }
 public ScheduledItem ScheduleUntil(Action <TimerState> timerUpdateEvent, long delayMs, long intervalMs, Func <bool> stopCondition)
 {
     TimerEventScheduler.TimerEventSchedulerItem timerEventSchedulerItem = new TimerEventScheduler.TimerEventSchedulerItem(timerUpdateEvent)
     {
         delayMs    = delayMs,
         intervalMs = intervalMs,
         timerUpdateStopCondition = stopCondition
     };
     this.Schedule(timerEventSchedulerItem);
     return(timerEventSchedulerItem);
 }
 public ScheduledItem ScheduleForDuration(Action <TimerState> timerUpdateEvent, long delayMs, long intervalMs, long durationMs)
 {
     TimerEventScheduler.TimerEventSchedulerItem timerEventSchedulerItem = new TimerEventScheduler.TimerEventSchedulerItem(timerUpdateEvent)
     {
         delayMs    = delayMs,
         intervalMs = intervalMs,
         timerUpdateStopCondition = null
     };
     timerEventSchedulerItem.SetDuration(durationMs);
     this.Schedule(timerEventSchedulerItem);
     return(timerEventSchedulerItem);
 }