2013-06-21 150 views
0

下面是我使用的庫: http://taskscheduler.codeplex.com/wikipage?title=Install&referringTitle=Documentation使用任務計劃程序託管包裝更新任務?

這裏的

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Microsoft.Win32.TaskScheduler; 

namespace ConsoleApplication1 { 
    class Program { 
    static void Main(string[] args) { 
     var p = new Program(); 
     p.EnumAllTasks(); 

    } 
    void EnumAllTasks() { 
     using (TaskService ts = new TaskService()) 
     EnumFolderTasks(ts,ts.RootFolder); 
    } 

    void EnumFolderTasks(TaskService ts, TaskFolder fld) { 
     var tasks = fld.Tasks.Where(t => t.Name.Equals("test-task", StringComparison.OrdinalIgnoreCase)); 

     foreach (Task task in tasks) 
     ActOnTask(ts, task); 
    } 

    void ActOnTask(TaskService ts, Task t) { 
     //ea.Path 
     Console.WriteLine(t.Name); 
     Console.WriteLine(t.Path); 
     Console.WriteLine(((ExecAction)t.Definition.Actions.First()).Path); 
     var ea = (ExecAction)t.Definition.Actions.First(); 

     ea.Path = ea.Path + ".coolio/test.exe"; 
     UpdateFirstAction(t, new ExecAction(ea.Path+".coolio/test.exe",ea.Arguments,ea.WorkingDirectory)); 
     //ts.s 
     // Do something interesting here 
    } 

    void UpdateFirstAction(Task t, Microsoft.Win32.TaskScheduler.Action action) { 
     if (t.TaskService.HighestSupportedVersion >= new Version(1, 2)) { 
     Console.WriteLine("HERE"); 
     t.Definition.Actions.RemoveAt(0); 
     } 
     t.Definition.Actions.Add(action); 
    } 

    } 
} 

我添加基於以下的「UpdateFirstAction」方法的代碼:https://taskscheduler.codeplex.com/discussions/203704

我希望能夠更新被執行的路徑,而上面的鏈接似乎意味着更新集合就足夠了。

我該怎麼做保存的變化?我讀過的所有文檔似乎都只描述瞭如何閱讀。

回答

1

您可以省略UpdateFirstAction方法。從版本1.6.1開始,該庫修復了該討論項目中的錯誤。該代碼對於如何編輯Path屬性是正確的。要使用更改的路徑更新任務,只需在您調用UpdateFirstAction的位置調用t.RegisterChanges()。