//方法 #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); }
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); }