Example #1
0
        //方法

        #region # 获取执行策略 —— static ExecutionStrategy GetExecutionStrategy(string strategyType...
        /// <summary>
        /// 获取执行策略
        /// </summary>
        /// <param name="strategyType">策略类型</param>
        /// <param name="strategy">策略</param>
        /// <returns>执行策略</returns>
        public static ExecutionStrategy GetExecutionStrategy(string strategyType, string strategy)
        {
            if (strategyType == nameof(FixedTimeStrategy))
            {
                DateTime          triggerTime       = DateTime.Parse(strategy);
                FixedTimeStrategy fixedTimeStrategy = new FixedTimeStrategy(triggerTime);

                return(fixedTimeStrategy);
            }
            if (strategyType == nameof(RepeatedTimeStrategy))
            {
                TimeSpan             triggerTime          = TimeSpan.Parse(strategy);
                RepeatedTimeStrategy repeatedTimeStrategy = new RepeatedTimeStrategy(triggerTime);

                return(repeatedTimeStrategy);
            }
            if (strategyType == nameof(RecurrenceStrategy))
            {
                TimeSpan           interval           = TimeSpan.Parse(strategy);
                RecurrenceStrategy recurrenceStrategy = new RecurrenceStrategy(interval);

                return(recurrenceStrategy);
            }
            if (strategyType == nameof(CronExpressionStrategy))
            {
                CronExpressionStrategy cronExpressionStrategy = new CronExpressionStrategy(strategy);

                return(cronExpressionStrategy);
            }

            throw new NotSupportedException("无此类型执行策略");
        }
        public void TestFindAllCrontabs()
        {
            TimeSpan               timeSpan               = new TimeSpan(0, 0, 2);
            RecurrenceStrategy     recurrenceStrategy     = new RecurrenceStrategy(timeSpan);
            string                 cronExpression         = DateTime.Now.AddSeconds(2).ToCronExpression();
            CronExpressionStrategy cronExpressionStrategy = new CronExpressionStrategy(cronExpression);

            ShowTimeCrontab showTimeCrontab = new ShowTimeCrontab("Hello World !", recurrenceStrategy);
            AlarmCrontab    alarmCrontab    = new AlarmCrontab("Hello World !", cronExpressionStrategy);

            ScheduleMediator.Schedule(showTimeCrontab, 0);
            ScheduleMediator.Schedule(alarmCrontab, 0);

            IList <ICrontab> crontabs = ScheduleMediator.FindAll();

            Assert.IsTrue(crontabs.Count == 2);
        }
Example #3
0
        public void TestScheduleTimePoint()
        {
            //开始调度
            string cronExpression = DateTime.Now.AddSeconds(2).ToCronExpression();
            CronExpressionStrategy cronExpressionStrategy = new CronExpressionStrategy(cronExpression);
            AlarmCrontab           alarmCrontab           = new AlarmCrontab("Hello World !", cronExpressionStrategy);

            Assert.IsTrue(alarmCrontab.Count == 0);
            Assert.IsFalse(alarmCrontab.Rung);

            ScheduleMediator.Schedule(alarmCrontab);

            //线程睡眠
            Thread.Sleep(5000);

            Assert.IsTrue(alarmCrontab.Count == 1);
            Assert.IsTrue(alarmCrontab.Rung);
        }