示例#1
0
        /// <summary>
        /// Creates a ScheduledJobTrigger object based on a provided WTS ITrigger.
        /// </summary>
        /// <param name="iTrigger">ITrigger</param>
        /// <returns>ScheduledJobTrigger</returns>
        private ScheduledJobTrigger CreateJobTrigger(
            ITrigger iTrigger)
        {
            ScheduledJobTrigger rtnJobTrigger = null;

            if (iTrigger is IBootTrigger)
            {
                IBootTrigger iBootTrigger = (IBootTrigger)iTrigger;
                rtnJobTrigger = ScheduledJobTrigger.CreateAtStartupTrigger(
                    ParseWTSTime(iBootTrigger.Delay),
                    ConvertStringId(iBootTrigger.Id),
                    iBootTrigger.Enabled);
            }
            else if (iTrigger is ILogonTrigger)
            {
                ILogonTrigger iLogonTrigger = (ILogonTrigger)iTrigger;
                rtnJobTrigger = ScheduledJobTrigger.CreateAtLogOnTrigger(
                    iLogonTrigger.UserId,
                    ParseWTSTime(iLogonTrigger.Delay),
                    ConvertStringId(iLogonTrigger.Id),
                    iLogonTrigger.Enabled);
            }
            else if (iTrigger is ITimeTrigger)
            {
                ITimeTrigger iTimeTrigger = (ITimeTrigger)iTrigger;
                TimeSpan     repInterval  = ParseWTSTime(iTimeTrigger.Repetition.Interval);
                TimeSpan     repDuration  = (repInterval != TimeSpan.Zero && iTimeTrigger.Repetition.StopAtDurationEnd == false) ?
                                            TimeSpan.MaxValue : ParseWTSTime(iTimeTrigger.Repetition.Duration);
                rtnJobTrigger = ScheduledJobTrigger.CreateOnceTrigger(
                    DateTime.Parse(iTimeTrigger.StartBoundary, CultureInfo.InvariantCulture),
                    ParseWTSTime(iTimeTrigger.RandomDelay),
                    repInterval,
                    repDuration,
                    ConvertStringId(iTimeTrigger.Id),
                    iTimeTrigger.Enabled);
            }
            else if (iTrigger is IDailyTrigger)
            {
                IDailyTrigger iDailyTrigger = (IDailyTrigger)iTrigger;
                rtnJobTrigger = ScheduledJobTrigger.CreateDailyTrigger(
                    DateTime.Parse(iDailyTrigger.StartBoundary, CultureInfo.InvariantCulture),
                    (Int32)iDailyTrigger.DaysInterval,
                    ParseWTSTime(iDailyTrigger.RandomDelay),
                    ConvertStringId(iDailyTrigger.Id),
                    iDailyTrigger.Enabled);
            }
            else if (iTrigger is IWeeklyTrigger)
            {
                IWeeklyTrigger iWeeklyTrigger = (IWeeklyTrigger)iTrigger;
                rtnJobTrigger = ScheduledJobTrigger.CreateWeeklyTrigger(
                    DateTime.Parse(iWeeklyTrigger.StartBoundary, CultureInfo.InvariantCulture),
                    (Int32)iWeeklyTrigger.WeeksInterval,
                    ConvertMaskToDaysOfWeekArray(iWeeklyTrigger.DaysOfWeek),
                    ParseWTSTime(iWeeklyTrigger.RandomDelay),
                    ConvertStringId(iWeeklyTrigger.Id),
                    iWeeklyTrigger.Enabled);
            }

            return(rtnJobTrigger);
        }
示例#2
0
        private ScheduledJobTrigger CreateJobTrigger(ITrigger iTrigger)
        {
            TimeSpan            maxValue;
            ScheduledJobTrigger scheduledJobTrigger = null;

            if (iTrigger as IBootTrigger == null)
            {
                if (iTrigger as ILogonTrigger == null)
                {
                    if (iTrigger as ITimeTrigger == null)
                    {
                        if (iTrigger as IDailyTrigger == null)
                        {
                            if (iTrigger as IWeeklyTrigger != null)
                            {
                                IWeeklyTrigger variable = (IWeeklyTrigger)iTrigger;
                                scheduledJobTrigger = ScheduledJobTrigger.CreateWeeklyTrigger(DateTime.Parse(variable.StartBoundary, CultureInfo.InvariantCulture), variable.WeeksInterval, this.ConvertMaskToDaysOfWeekArray(variable.DaysOfWeek), this.ParseWTSTime(variable.RandomDelay), this.ConvertStringId(variable.Id), variable.Enabled);
                            }
                        }
                        else
                        {
                            IDailyTrigger variable1 = (IDailyTrigger)iTrigger;
                            scheduledJobTrigger = ScheduledJobTrigger.CreateDailyTrigger(DateTime.Parse(variable1.StartBoundary, CultureInfo.InvariantCulture), variable1.DaysInterval, this.ParseWTSTime(variable1.RandomDelay), this.ConvertStringId(variable1.Id), variable1.Enabled);
                        }
                    }
                    else
                    {
                        ITimeTrigger variable2 = (ITimeTrigger)iTrigger;
                        TimeSpan     timeSpan  = this.ParseWTSTime(variable2.Repetition.Interval);
                        if (!(timeSpan != TimeSpan.Zero) || variable2.Repetition.StopAtDurationEnd)
                        {
                            maxValue = this.ParseWTSTime(variable2.Repetition.Duration);
                        }
                        else
                        {
                            maxValue = TimeSpan.MaxValue;
                        }
                        TimeSpan timeSpan1 = maxValue;
                        scheduledJobTrigger = ScheduledJobTrigger.CreateOnceTrigger(DateTime.Parse(variable2.StartBoundary, CultureInfo.InvariantCulture), this.ParseWTSTime(variable2.RandomDelay), new TimeSpan?(timeSpan), new TimeSpan?(timeSpan1), this.ConvertStringId(variable2.Id), variable2.Enabled);
                    }
                }
                else
                {
                    ILogonTrigger variable3 = (ILogonTrigger)iTrigger;
                    scheduledJobTrigger = ScheduledJobTrigger.CreateAtLogOnTrigger(variable3.UserId, this.ParseWTSTime(variable3.Delay), this.ConvertStringId(variable3.Id), variable3.Enabled);
                }
            }
            else
            {
                IBootTrigger variable4 = (IBootTrigger)iTrigger;
                scheduledJobTrigger = ScheduledJobTrigger.CreateAtStartupTrigger(this.ParseWTSTime(variable4.Delay), this.ConvertStringId(variable4.Id), variable4.Enabled);
            }
            return(scheduledJobTrigger);
        }
示例#3
0
        /// <summary>
        /// Creates a new WTS trigger based on the provided ScheduledJobTrigger object
        /// and adds it to the provided ITaskDefinition object.
        /// </summary>
        /// <param name="iTaskDefinition">ITaskDefinition</param>
        /// <param name="jobTrigger">ScheduledJobTrigger</param>
        private void AddTaskTrigger(
            ITaskDefinition iTaskDefinition,
            ScheduledJobTrigger jobTrigger)
        {
            ITrigger iTrigger = null;

            switch (jobTrigger.Frequency)
            {
            case TriggerFrequency.AtStartup:
            {
                iTrigger = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_BOOT);
                IBootTrigger iBootTrigger = iTrigger as IBootTrigger;
                Debug.Assert(iBootTrigger != null);

                iBootTrigger.Delay = ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);

                iTrigger.Id      = jobTrigger.Id.ToString(CultureInfo.InvariantCulture);
                iTrigger.Enabled = jobTrigger.Enabled;
            }
            break;

            case TriggerFrequency.AtLogon:
            {
                iTrigger = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);
                ILogonTrigger iLogonTrigger = iTrigger as ILogonTrigger;
                Debug.Assert(iLogonTrigger != null);

                iLogonTrigger.UserId = ScheduledJobTrigger.IsAllUsers(jobTrigger.User) ? null : jobTrigger.User;
                iLogonTrigger.Delay  = ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);

                iTrigger.Id      = jobTrigger.Id.ToString(CultureInfo.InvariantCulture);
                iTrigger.Enabled = jobTrigger.Enabled;
            }
            break;

            case TriggerFrequency.Once:
            {
                iTrigger = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                ITimeTrigger iTimeTrigger = iTrigger as ITimeTrigger;
                Debug.Assert(iTimeTrigger != null);

                iTimeTrigger.RandomDelay = ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);

                // Time trigger repetition.
                if (jobTrigger.RepetitionInterval != null &&
                    jobTrigger.RepetitionDuration != null)
                {
                    iTimeTrigger.Repetition.Interval = ConvertTimeSpanToWTSString(jobTrigger.RepetitionInterval.Value);
                    if (jobTrigger.RepetitionDuration.Value == TimeSpan.MaxValue)
                    {
                        iTimeTrigger.Repetition.StopAtDurationEnd = false;
                    }
                    else
                    {
                        iTimeTrigger.Repetition.StopAtDurationEnd = true;
                        iTimeTrigger.Repetition.Duration          = ConvertTimeSpanToWTSString(jobTrigger.RepetitionDuration.Value);
                    }
                }

                iTrigger.StartBoundary = ConvertDateTimeToString(jobTrigger.At);
                iTrigger.Id            = jobTrigger.Id.ToString(CultureInfo.InvariantCulture);
                iTrigger.Enabled       = jobTrigger.Enabled;
            }
            break;

            case TriggerFrequency.Daily:
            {
                iTrigger = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
                IDailyTrigger iDailyTrigger = iTrigger as IDailyTrigger;
                Debug.Assert(iDailyTrigger != null);

                iDailyTrigger.RandomDelay  = ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);
                iDailyTrigger.DaysInterval = (short)jobTrigger.Interval;

                iTrigger.StartBoundary = ConvertDateTimeToString(jobTrigger.At);
                iTrigger.Id            = jobTrigger.Id.ToString(CultureInfo.InvariantCulture);
                iTrigger.Enabled       = jobTrigger.Enabled;
            }
            break;

            case TriggerFrequency.Weekly:
            {
                iTrigger = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_WEEKLY);
                IWeeklyTrigger iWeeklyTrigger = iTrigger as IWeeklyTrigger;
                Debug.Assert(iWeeklyTrigger != null);

                iWeeklyTrigger.RandomDelay   = ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);
                iWeeklyTrigger.WeeksInterval = (short)jobTrigger.Interval;
                iWeeklyTrigger.DaysOfWeek    = ConvertDaysOfWeekToMask(jobTrigger.DaysOfWeek);

                iTrigger.StartBoundary = ConvertDateTimeToString(jobTrigger.At);
                iTrigger.Id            = jobTrigger.Id.ToString(CultureInfo.InvariantCulture);
                iTrigger.Enabled       = jobTrigger.Enabled;
            }
            break;
            }
        }
示例#4
0
        private void AddTaskTrigger(ITaskDefinition iTaskDefinition, ScheduledJobTrigger jobTrigger)
        {
            ITrigger         str;
            string           user;
            TriggerFrequency frequency = jobTrigger.Frequency;

            switch (frequency)
            {
            case TriggerFrequency.Once:
            {
                str = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                ITimeTrigger wTSString = str as ITimeTrigger;
                wTSString.RandomDelay = ScheduledJobWTS.ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);
                TimeSpan?repetitionInterval = jobTrigger.RepetitionInterval;
                if (repetitionInterval.HasValue)
                {
                    TimeSpan?repetitionDuration = jobTrigger.RepetitionDuration;
                    if (repetitionDuration.HasValue)
                    {
                        TimeSpan?nullable = jobTrigger.RepetitionInterval;
                        wTSString.Repetition.Interval = ScheduledJobWTS.ConvertTimeSpanToWTSString(nullable.Value);
                        TimeSpan?repetitionDuration1 = jobTrigger.RepetitionDuration;
                        if (repetitionDuration1.Value != TimeSpan.MaxValue)
                        {
                            wTSString.Repetition.StopAtDurationEnd = true;
                            TimeSpan?nullable1 = jobTrigger.RepetitionDuration;
                            wTSString.Repetition.Duration = ScheduledJobWTS.ConvertTimeSpanToWTSString(nullable1.Value);
                        }
                        else
                        {
                            wTSString.Repetition.StopAtDurationEnd = false;
                        }
                    }
                }
                str.StartBoundary = ScheduledJobWTS.ConvertDateTimeToString(jobTrigger.At);
                int id = jobTrigger.Id;
                str.Id      = id.ToString(CultureInfo.InvariantCulture);
                str.Enabled = jobTrigger.Enabled;
                return;
            }

            case TriggerFrequency.Daily:
            {
                str = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
                IDailyTrigger interval = str as IDailyTrigger;
                interval.RandomDelay  = ScheduledJobWTS.ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);
                interval.DaysInterval = (short)jobTrigger.Interval;
                str.StartBoundary     = ScheduledJobWTS.ConvertDateTimeToString(jobTrigger.At);
                int num = jobTrigger.Id;
                str.Id      = num.ToString(CultureInfo.InvariantCulture);
                str.Enabled = jobTrigger.Enabled;
                return;
            }

            case TriggerFrequency.Weekly:
            {
                str = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_WEEKLY);
                IWeeklyTrigger mask = str as IWeeklyTrigger;
                mask.RandomDelay   = ScheduledJobWTS.ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);
                mask.WeeksInterval = (short)jobTrigger.Interval;
                mask.DaysOfWeek    = ScheduledJobWTS.ConvertDaysOfWeekToMask(jobTrigger.DaysOfWeek);
                str.StartBoundary  = ScheduledJobWTS.ConvertDateTimeToString(jobTrigger.At);
                int id1 = jobTrigger.Id;
                str.Id      = id1.ToString(CultureInfo.InvariantCulture);
                str.Enabled = jobTrigger.Enabled;
                return;
            }

            case TriggerFrequency.AtLogon:
            {
                str = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);
                ILogonTrigger variable  = str as ILogonTrigger;
                ILogonTrigger variable1 = variable;
                if (ScheduledJobTrigger.IsAllUsers(jobTrigger.User))
                {
                    user = null;
                }
                else
                {
                    user = jobTrigger.User;
                }
                variable1.UserId = user;
                variable.Delay   = ScheduledJobWTS.ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);
                int num1 = jobTrigger.Id;
                str.Id      = num1.ToString(CultureInfo.InvariantCulture);
                str.Enabled = jobTrigger.Enabled;
                return;
            }

            case TriggerFrequency.AtStartup:
            {
                str = iTaskDefinition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_BOOT);
                IBootTrigger wTSString1 = str as IBootTrigger;
                wTSString1.Delay = ScheduledJobWTS.ConvertTimeSpanToWTSString(jobTrigger.RandomDelay);
                int id2 = jobTrigger.Id;
                str.Id      = id2.ToString(CultureInfo.InvariantCulture);
                str.Enabled = jobTrigger.Enabled;
                return;
            }

            default:
            {
                return;
            }
            }
        }