示例#1
0
 private void ScheduleNext(IExecutive exec)
 {
     if (UseDaemonEvents)
     {
         Exec.RequestDaemonEvent(Eer, NextOccurrence, Priority, null);
     }
     else
     {
         Exec.RequestEvent(Eer, NextOccurrence, Priority, null);
     }
     AdvanceNextOccurrenceDate();
 }
示例#2
0
 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);
                 }
             }
         }
     }
 }
示例#3
0
            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();
            }
示例#4
0
        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"));
        }
示例#5
0
        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);
        }
示例#6
0
 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);
 }