Exemplo n.º 1
0
        private void Init(ConfigScheduleEntity configSchedule)
        {
            _monitor = SystemlogMgr.GetScheduleMonitor(configSchedule.Idx);
            if (_monitor == null)
            {
                throw new Exception("[ScheduleInfo] no monitor,schedule id:" + configSchedule.Idx);
            }
            _monitor.ScheduleTimeType = configSchedule.TimeType;
            _scheduleConfig           = configSchedule;
            _scheduleTimes            = configSchedule.Times;
            bool isChampion = CheckIsChampion(configSchedule.Idx);

            switch (configSchedule.TimeType)
            {
            default:
            case (int)EnumScheduleTimeType.TimeTable:
                _timeConfig = new ScheduleTimeConfigTimeTable(configSchedule.Setting, isChampion);
                break;

            case (int)EnumScheduleTimeType.Interval:
                _timeConfig = new ScheduleTimeConfigInterval(configSchedule.Setting);
                break;
            }
            if (_scheduleConfig.RetryTimes > 0)
            {
                _maxRetryTimes = _scheduleConfig.RetryTimes - 1;
            }
            if (configSchedule.RunDelay >= 0)
            {
                _nextInvokedDateTime = DateTime.Now.AddMinutes(configSchedule.RunDelay);
            }
            else
            {
                _nextInvokedDateTime = _timeConfig.GetNext(DateTime.Now);
            }
            if (_scheduleConfig.TimeType == (int)EnumScheduleTimeType.Interval && _timeConfig.GetIntervalTime() < 1000)
            {
                _isIntensive = true;
            }
            Log("下次时间" + _nextInvokedDateTime);
        }