Sim*_*ens 6

有一个任务计划程序API,你可以用它来访问有关任务的信息.(这是一个com库,但您可以使用pinvokes从C#调用它)

一篇关于codeproject文章,它为API提供了一个.net包装器.

[还有schtasks命令 - 更多信息 ]


Ron*_*nyR 5

该 API 可以通过 NuGet安装。包名称是“TaskScheduler”。(https://github.com/dahall/taskscheduler

以下示例显示如何测试任务是否使用其名称安装,如果未安装则每小时执行一次。

using (TaskService service = new TaskService())
{
    if (!service.RootFolder.AllTasks.Any(t => t.Name == "YourScheduledTaskName"))
    {
        Console.WriteLine("YourScheduledTaskName is not installed on this system. Do you want to install it now? (y/n)");
        var answer = Console.ReadLine();
        if (answer == "y")
        {
            var task = service.NewTask();
            task.RegistrationInfo.Description = "YourScheduledTaskDescription";
            task.RegistrationInfo.Author = "YourAuthorName";

            var hourlyTrigger = new DailyTrigger { StartBoundary = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 1, 0 , 0) };
            hourlyTrigger.Repetition.Interval = TimeSpan.FromHours(1);
            task.Triggers.Add(hourlyTrigger);

            var taskExecutablePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "YourScheduledTaskName.exe");
            task.Actions.Add(new ExecAction(taskExecutablePath));

            service.RootFolder.RegisterTaskDefinition("YourScheduledTaskName", task);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)