2017-01-05 7 views
0

Ich verwende den Taskplaner-gesteuerten Wrapper, um geplante Aufgaben von einem externen Programm (SharePoint) zu erstellen. Das Erstellen und Lesen der Aufgaben ist in Ordnung, aber ich finde keine Möglichkeit, die Aufgabe zu bearbeiten, sobald sie registriert wurde. muss ich eine neue Aufgabe erneut registrieren oder eine Update-Anfrage durchführen?Bearbeitung von Taskplaner-Aufgaben C#

meine Aufgabe registrieren:

TaskDefinition newTask = taskService.NewTask(); 
newTask.RegistrationInfo.Description = (string)timerJobItem.FieldValues["Description"]; 
newTask.Principal.LogonType = TaskLogonType.InteractiveToken; 

// Switch for different schedule options, use createTriggers method 
List<Trigger> triggers = createTriggers((string)timerJobItem["Schedule"], (DateTime)timerJobItem["StartTime"]); 
newTask.Triggers.Add(triggers.First()); 

// Create Action to add to new Task 
newTask.Actions.Add(new ExecAction((string)timerJobItem["Action"], (string)timerJobItem["Arguments"], null)); 
// Create Task 
taskService.RootFolder.RegisterTaskDefinition(jobName, newTask); 

Dann habe ich die Aufgabe in den Planer finden, die funktioniert, aber wenn ich versuche, nichts zu machen Änderungen passiert:

// Method to get all Tasks that match a name - Working 
private Task[] GetAllTasks(string regexString) 
    { 
     Regex regex = new Regex(String.Format(@"{0}", regexString)); 
     using (TaskService taskService = new TaskService()) 
     { 
      Task[] allTasksCollection = taskService.FindAllTasks(regex, true); 
      foreach (Task task in allTasksCollection) 
      { 
       Console.WriteLine(task.Name); 
      } 
      return allTasksCollection; 
     }; 
    } 

....

// Get a single timer job 
Task[] allTimerJobs = GetAllTasks(prefix); 
List<Task> allTimerJobsList = allTimerJobs.Cast<Task>().ToList(); 
string jobName = String.Format("{0}[{1}].{2}", prefix, (int)timerJobItem["ID"], jobReference); 

// Get Task by name 
int indexOfJob = allTimerJobsList.FindIndex(t => t.Name == jobName); 
Task matchingJob = allTimerJobsList[indexOfJob]; 

// No Error but nothing happens to task 
matchingJob.Definition.Triggers.Clear(); 

// No Error but nothing happens to task 
matchingJob.Definition.Settings.Enabled = false; 

TIA

Antwort

0

Die einzige Möglichkeit, die Task zu bearbeiten, besteht darin, die Definition in eine neue Task zu kopieren und sie im RootFolder erneut zu registrieren.

Das folgende Beispiel ändert sich die Beschreibung auf den neuen Wert, muss der Task-Namen übereinstimmen oder eine neue Aufgabe erstellt werden:

TaskDefinition td = taskService.NewTask(); 
td = existingJob.Definition; 
td.RegistrationInfo.Description = "New Value"; 
taskService.RootFolder.RegisterTaskDefinition(jobName, td); 
Verwandte Themen