示例#1
0
        /// <summary>
        /// Вычисление следующего времени исполнения
        /// </summary>
        /// <param name="sett">Параметры шедулера</param>
        /// <returns>Дата следующего исполнения</returns>
        protected static DateTime GetNextTime(SchedularSettings sett)
        {
            TimeSpan _start = sett.StartTime;
            TimeSpan _end = sett.EndTime;
            TimeSpan _interval = sett.Interval;

            if (_interval == default(TimeSpan))
                return default(DateTime);
            if (DateTime.Now.TimeOfDay > _end)
            {
                return DateTime.Now.Date + _start + new TimeSpan(24, 0, 0);
            }
            else
            {
                if (DateTime.Now.TimeOfDay < _start)
                {
                    return DateTime.Now.Date + _start;
                }
                else
                {
                    for (TimeSpan inv = _start; inv <= _end; inv += _interval)
                        if (DateTime.Now.TimeOfDay <= inv)
                        {
                            return DateTime.Now.Date + inv;
                        }
                    return DateTime.Now.Date + _start + new TimeSpan(24, 0, 0);
                }

            }
        }
示例#2
0
 /// <summary>
 /// Создать экземпляр планировщика
 /// </summary>
 /// <param name="sett">Настройки</param>
 /// <param name="action">Действие</param>
 /// <param name="Executor">Менеджер исполнения</param>
 protected MySchedular(SchedularSettings sett, Action action, IExecutor Executor = null)
 {
     this.sett = sett;
     executor = Executor ?? new Executor();
     this.action = action;
     if (sett.Interval != default(TimeSpan))
         new Thread(DoWork) { IsBackground = true }.Start();
 }
示例#3
0
        /// <summary>
        /// Загрузка настроек из базы
        /// </summary>
        /// <param name="SchedularName">Имя планировщика</param>
        /// <returns>Набор параметров для запуска планирования</returns>
        protected static SchedularSettings LoadSettings(string SchedularName)
        {
            Log.Debug("Загрузка настроек для " + SchedularName);
            try
            {
                SchedularSettings settings = new SchedularSettings();
                string ConnectionString = ConfigurationManager.ConnectionStrings["dbsync"].ConnectionString;
                using (SqlConnection conn = new SqlConnection(ConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = string.Format(@"Select TOP 1 [SchedularName]
              ,[StartDate]
              ,[EndDate]
              ,[Interval]
              ,[IsEnabled] from SchedularSettings where [SchedularName] = '{0}'", SchedularName);
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            try
                            {
                                if (!reader.Read())
                                    return settings;

                                settings.StartTime = TimeSpan.Parse(reader["StartDate"].ToString());
                                settings.SchedularName = reader["SchedularName"].ToString();
                                settings.EndTime = TimeSpan.Parse(reader["EndDate"].ToString());

                                settings.Interval = TimeSpan.Parse(reader["Interval"].ToString());
                                settings.IsEnabled = bool.Parse(reader["IsEnabled"].ToString());

                            }

                            catch (Exception Ex)
                            {
                                Log.Error("Не удалось разобрать значение настройки из базы " + reader["vs"].ToString(), Ex);
                            }

                        }
                    }

                }
                return settings;
            }
            catch (Exception ex)
            {

                Log.Error("Не удалось загрузить настройки из базы ", ex);
            }
            return null;
        }