示例#1
0
        }         // CreateTask

        private static TaskFolder GetTaskSchedulerFolder(RecordAdvancedSettings settings, TaskService taskScheduler)
        {
            if (string.IsNullOrEmpty(settings.TaskSchedulerFolder))
            {
                settings.TaskSchedulerFolder = "";
                return(taskScheduler.RootFolder);
            } // if

            TaskFolder folder = null;

            try
            {
                folder = taskScheduler.GetFolder(settings.TaskSchedulerFolder);
            }
            catch (DirectoryNotFoundException)
            {
                // folder does not exists
            }
            catch (FileNotFoundException)
            {
                // folder does not exists
            } // try-catch

            folder ??= taskScheduler.RootFolder.CreateFolder(settings.TaskSchedulerFolder);

            return(folder ?? throw new IOException());
        } // GetTaskSchedulerFolder
示例#2
0
        }     // SetDescription

        private void SetAdvancedSettings(TaskSettings settings, RecordAdvancedSettings advanced, bool isRightNow)
        {
            // Fixed parameters
            settings.Enabled = true;
            settings.Hidden  = false;

            // From UI
            settings.AllowDemandStart = isRightNow;
            if ((advanced.DeleteAfter != null) && (advanced.DeleteAfter.Enabled))
            {
                settings.DeleteExpiredTaskAfter = advanced.DeleteAfter.Time;
            } // if

            switch (advanced.MultipleInstances)
            {
            case RecordMultipleInstances.RecordBoth:
                settings.MultipleInstances = TaskInstancesPolicy.Parallel;
                break;

            case RecordMultipleInstances.DoNotRecord:
                settings.MultipleInstances = TaskInstancesPolicy.IgnoreNew;
                break;

            case RecordMultipleInstances.Queue:
                settings.MultipleInstances = TaskInstancesPolicy.Queue;
                // NOTE: The recording process should not start recording if the task is started after the end of the program
                break;

            case RecordMultipleInstances.StopPrevious:
                settings.MultipleInstances = TaskInstancesPolicy.StopExisting;
                break;

            default:
                throw new IndexOutOfRangeException();
            } // switch

            if ((advanced.FailureRetry != null) && (advanced.FailureRetry.Enabled))
            {
                settings.RestartInterval = advanced.FailureRetry.RestartInterval;
                settings.RestartCount    = advanced.FailureRetry.MaxRetries;
            } // if

            // Start recording as soon as possible if the schedule is missed
            // NOTE: The recording process should not start recording if the task is started after the end of the program
            settings.StartWhenAvailable = advanced.AsSoonAsPossible;

            settings.WakeToRun = advanced.WakeComputer;

            // The RecordTask execution limit is not an absolute value. It has to be added to the total record time (including safety margins)
            if ((advanced.ExecutionTimeLimit != null) && (advanced.ExecutionTimeLimit.Enabled))
            {
                settings.ExecutionTimeLimit = _totalRecordTime + advanced.ExecutionTimeLimit.Time;
            } // if
        }     // SetAdvancedSettings
示例#3
0
        } // GetRecordAction

        public static RecordAdvancedSettings GetRecordAdvancedSettings()
        {
            var advanced = RecordAdvancedSettings.CreateWithDefaultValues();

            var folders = AppUiConfiguration.Current.User.Record.TaskSchedulerFolders;

            if (folders != null)
            {
                advanced.TaskSchedulerFolder = folders[0].Path;
            } // if

            return(advanced);
        } // GetRecordAdvancedSettings
示例#4
0
        }         // CreateTask

        private static TaskFolder GetTaskSchedulerFolder(RecordAdvancedSettings settings, TaskService taskScheduler)
        {
            if (string.IsNullOrEmpty(settings.TaskSchedulerFolder))
            {
                settings.TaskSchedulerFolder = "";
                return(taskScheduler.RootFolder);
            } // if

            try
            {
                return(taskScheduler.GetFolder(settings.TaskSchedulerFolder));
            }
            catch (DirectoryNotFoundException)
            {
                // folder does not exist: create it
                return(taskScheduler.RootFolder.CreateFolder(settings.TaskSchedulerFolder));
            }
            catch (FileNotFoundException)
            {
                // folder does not exist: create it
                return(taskScheduler.RootFolder.CreateFolder(settings.TaskSchedulerFolder));
            } // try-catch
        }     // GetTaskSchedulerFolder