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

本文关键字:我的 过程 可以使 Win32 TaskScheduler 我可以 | 更新日期: 2023-09-27 18:25:04

我想使用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'

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

似乎是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,然后返回结果为值。

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

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