private void ScheduleNext(IExecutive exec) { if (UseDaemonEvents) { Exec.RequestDaemonEvent(Eer, NextOccurrence, Priority, null); } else { Exec.RequestEvent(Eer, NextOccurrence, Priority, null); } AdvanceNextOccurrenceDate(); }
private void OnExecEvent(IExecutive exec, object userData) { if (!m_abortRequested) { Debug.Assert(exec == m_executive, "Executive Mismatch" , "A metronome was called by an executive that is not the one it was initially created for."); FireEvents(exec, userData); if (!m_abortRequested) { TickIndex++; DateTime nextEventTime = exec.Now + m_period; if (nextEventTime <= m_finishAfter) { if (m_autoFinish) { exec.RequestDaemonEvent(m_execEvent, nextEventTime, 0.0, null); } else { exec.RequestEvent(m_execEvent, nextEventTime, 0.0, null); } } } } }
public static void Run() { DateTime when = DateTime.Parse("Fri, 15 Jul 2016 00:00:00"); IExecutive exec = ExecFactory.Instance.CreateExecutive(); exec.RequestDaemonEvent(CheckIfStillRunning, when, 0.0, null); exec.RequestEvent(Finish, when + TimeSpan.FromMinutes(100)); exec.Start(); }
public void TestClockAboutToChangeEvent() { IExecutive exec1 = ExecFactory.Instance.CreateExecutive(); exec1.ClockAboutToChange += new ExecutiveEvent(exec1_ClockAboutToChange); m_result = ""; DateTime t0 = new DateTime(2007, 5, 16, 12, 34, 56); // Daemon event. Should never fire. exec1.RequestDaemonEvent(new ExecEventReceiver(MyExecEventReceiver2), new DateTime(2025, 12, 25), 0.0, null); int[] increments = new int[] { 1, 2, 3, 0, 0, 2, 0, 2, 3, 0, 0, 0, 4, 0 }; foreach (int increment in increments) { exec1.RequestEvent(new ExecEventReceiver(MyExecEventReceiver2), t0, 0.0, null); t0 += TimeSpan.FromMinutes(increment); } exec1.Start(); Console.WriteLine(m_result); Assert.IsTrue(m_result.Equals("16/05/2007 12:34:56 PM : Event is firing.\r\n\tClock, currently at 16/05/2007 12:34:56 PM, is about to change.\r\n16/05/2007 12:35:56 PM : Event is firing.\r\n\tClock, currently at 16/05/2007 12:35:56 PM, is about to change.\r\n16/05/2007 12:37:56 PM : Event is firing.\r\n\tClock, currently at 16/05/2007 12:37:56 PM, is about to change.\r\n16/05/2007 12:40:56 PM : Event is firing.\r\n16/05/2007 12:40:56 PM : Event is firing.\r\n16/05/2007 12:40:56 PM : Event is firing.\r\n\tClock, currently at 16/05/2007 12:40:56 PM, is about to change.\r\n16/05/2007 12:42:56 PM : Event is firing.\r\n16/05/2007 12:42:56 PM : Event is firing.\r\n\tClock, currently at 16/05/2007 12:42:56 PM, is about to change.\r\n16/05/2007 12:44:56 PM : Event is firing.\r\n\tClock, currently at 16/05/2007 12:44:56 PM, is about to change.\r\n16/05/2007 12:47:56 PM : Event is firing.\r\n16/05/2007 12:47:56 PM : Event is firing.\r\n16/05/2007 12:47:56 PM : Event is firing.\r\n16/05/2007 12:47:56 PM : Event is firing.\r\n\tClock, currently at 16/05/2007 12:47:56 PM, is about to change.\r\n16/05/2007 12:51:56 PM : Event is firing.\r\n")); }
private void DoPause(IExecutive exec, object userData) { DateTime nextPulse = exec.Now + TimeSpanOperations.Max(TimeSpan.Zero, m_periodicity.GetNext()); exec.RequestDaemonEvent(m_doPulse, nextPulse, 0.0, null); }
private static void CheckIfStillRunning(IExecutive exec, object userData) { Console.WriteLine("{0} : Still running.", exec.Now); exec.RequestDaemonEvent(CheckIfStillRunning, exec.Now + TimeSpan.FromMinutes(7), 0.0, null); }