我可以使用Win32.TaskScheduler来安排我的程序吗?

时间:2013-07-25 11:40:06

标签: c# .net scheduled-tasks scheduler

我想使用http://taskscheduler.codeplex.com/

我可以在示例中使用它来安排外部动作。

我可以使用它来安排我的内部操作,还是可以使用其他东西来执行外部任务?

e.g。 :

    public static void cstask() {
        using (TaskService ts = new TaskService()) {
            const string taskName = "Test2";

            System.Action test = new System.Action( () => {
                ;
                }
            );

            Task t = ts.AddTask(taskName,
               new TimeTrigger() { StartBoundary = DateTime.Now + TimeSpan.FromHours(1), Enabled = false },
               //new ExecAction("notepad.exe", "c:\\test.log", "C:\\")
               (Microsoft.Win32.TaskScheduler.Action)test

               );

            ts.RootFolder.DeleteTask(taskName);
            }
        }

- >

Cannot convert type 'System.Action' to 'Microsoft.Win32.TaskScheduler.Action'

2 个答案:

答案 0 :(得分:2)

似乎是Reactive Extensions

的工作
using System.Reactive;
using System.Reactive.Linq;

IDisposable subscription = 
    Observable
        .Interval(TimeSpan.FromHours(1))
        .Take(1)
        .Subscribe(i =>
{
    Console.WriteLine("I'm doing something delayed by an hour");
});

将订阅配置为在运行之前将其终止。如果你想要你的 任务返回处理然后有点不同。

double SomeFunction(){ 
    ...
}

public async double DoItInOneHour(){
    return await Observable
            .Interval(TimeSpan.FromHours(1))
            .Take(1)
            .Select( i=> SomeFunction());
}

将异步等待超时,评估SomeFunction然后返回 价值的结果。

答案 1 :(得分:1)

您无法直接使用Windows任务计划程序调用System.Action。

但您可以创建执行应用程序的计划任务。调用内部操作所需的信息可以通过命令行参数传递。