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

実行されるパスを更新できるようにしたいのですが、上記のリンクは、コレクションの更新で十分であることを暗示しているようです。

実際に変更を保存するにはどうすればよいですか? 私が読んだすべてのドキュメントは、物事の読み方のみを説明しているようです。

4

1 に答える 1

1

UpdateFirstAction メソッドは省略できます。バージョン 1.6.1 以降のライブラリは、そのディスカッション アイテムのバグを修正しました。Path プロパティの編集方法に関するコードは正しいです。変更されたパスでタスクを更新するには、UpdateFirstAction を呼び出す時点で t.RegisterChanges() を呼び出すだけです。

于 2014-01-07T00:27:27.330 に答える