} // 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
} // 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
} // 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
} // 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