0

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

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

我可以用它来安排我的内部行动,或者我应该用其他东西来完成外部任务吗?

例如:

    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'
4

2 回答 2

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 然后将结果返回给 value。

于 2013-07-25T13:21:52.623 回答
1

您不能使用 Windows 任务调度程序直接调用 System.Action。

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

于 2013-07-25T13:42:34.473 回答