예제 #1
0
        /// <summary>
        /// Gets the trigger info.
        /// </summary>
        /// <param name="trigger">The trigger.</param>
        /// <returns>TaskTriggerInfo.</returns>
        public static TaskTriggerInfo GetTriggerInfo(ITaskTrigger trigger)
        {
            var info = new TaskTriggerInfo
            {
                Type = trigger.GetType().Name
            };

            var dailyTrigger = trigger as DailyTrigger;

            if (dailyTrigger != null)
            {
                info.TimeOfDayTicks = dailyTrigger.TimeOfDay.Ticks;
            }

            var weeklyTaskTrigger = trigger as WeeklyTrigger;

            if (weeklyTaskTrigger != null)
            {
                info.TimeOfDayTicks = weeklyTaskTrigger.TimeOfDay.Ticks;
                info.DayOfWeek = weeklyTaskTrigger.DayOfWeek;
            }

            var intervalTaskTrigger = trigger as IntervalTrigger;

            if (intervalTaskTrigger != null)
            {
                info.IntervalTicks = intervalTaskTrigger.Interval.Ticks;
            }

            var systemEventTrigger = trigger as SystemEventTrigger;

            if (systemEventTrigger != null)
            {
                info.SystemEvent = systemEventTrigger.SystemEvent;
            }

            if (trigger.TaskOptions != null)
            {
                info.MaxRuntimeMs = trigger.TaskOptions.MaxRuntimeMs;
            }

            return info;
        }
예제 #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TaskInfo"/> class.
 /// </summary>
 public TaskInfo()
 {
     Triggers = new TaskTriggerInfo[] {};
 }
        /// <summary>
        /// Converts a TaskTriggerInfo into a concrete BaseTaskTrigger
        /// </summary>
        /// <param name="info">The info.</param>
        /// <returns>BaseTaskTrigger.</returns>
        /// <exception cref="System.ArgumentNullException"></exception>
        /// <exception cref="System.ArgumentException">Invalid trigger type:  + info.Type</exception>
        public static ITaskTrigger GetTrigger(TaskTriggerInfo info)
        {
            if (info.Type.Equals(typeof(DailyTrigger).Name, StringComparison.OrdinalIgnoreCase))
            {
                if (!info.TimeOfDayTicks.HasValue)
                {
                    throw new ArgumentNullException();
                }

                return new DailyTrigger
                {
                    TimeOfDay = TimeSpan.FromTicks(info.TimeOfDayTicks.Value)
                };
            }

            if (info.Type.Equals(typeof(WeeklyTrigger).Name, StringComparison.OrdinalIgnoreCase))
            {
                if (!info.TimeOfDayTicks.HasValue)
                {
                    throw new ArgumentNullException();
                }

                if (!info.DayOfWeek.HasValue)
                {
                    throw new ArgumentNullException();
                }

                return new WeeklyTrigger
                {
                    TimeOfDay = TimeSpan.FromTicks(info.TimeOfDayTicks.Value),
                    DayOfWeek = info.DayOfWeek.Value
                };
            }

            if (info.Type.Equals(typeof(IntervalTrigger).Name, StringComparison.OrdinalIgnoreCase))
            {
                if (!info.IntervalTicks.HasValue)
                {
                    throw new ArgumentNullException();
                }

                return new IntervalTrigger
                {
                    Interval = TimeSpan.FromTicks(info.IntervalTicks.Value)
                };
            }

            if (info.Type.Equals(typeof(SystemEventTrigger).Name, StringComparison.OrdinalIgnoreCase))
            {
                if (!info.SystemEvent.HasValue)
                {
                    throw new ArgumentNullException();
                }

                return new SystemEventTrigger
                {
                    SystemEvent = info.SystemEvent.Value
                };
            }

            if (info.Type.Equals(typeof(StartupTrigger).Name, StringComparison.OrdinalIgnoreCase))
            {
                return new StartupTrigger();
            }

            throw new ArgumentException("Unrecognized trigger type: " + info.Type);
        }
예제 #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TaskInfo"/> class.
 /// </summary>
 public TaskInfo()
 {
     Triggers = new TaskTriggerInfo[] {};
 }