创建计划任务


148

我正在从事C#WPF项目。我需要允许用户创建计划任务并将其添加到Windows Task Scheduler。

我该如何去做,以及我需要什么使用指令和引用,因为在搜索Internet时找不到太多东西。


2
您所需的一切都在这里:msdn.microsoft.com/zh-cn/library/aa383614(v=vs.85).aspx。API,有关如何以编程方式实现所需需求的示例和说明。
kroonwijk 2011年

Answers:


214

您可以使用Task Scheduler Managed Wrapper

using System;
using Microsoft.Win32.TaskScheduler;

class Program
{
   static void Main(string[] args)
   {
      // Get the service on the local machine
      using (TaskService ts = new TaskService())
      {
         // Create a new task definition and assign properties
         TaskDefinition td = ts.NewTask();
         td.RegistrationInfo.Description = "Does something";

         // Create a trigger that will fire the task at this time every other day
         td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });

         // Create an action that will launch Notepad whenever the trigger fires
         td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));

         // Register the task in the root folder
         ts.RootFolder.RegisterTaskDefinition(@"Test", td);

         // Remove the task we just created
         ts.RootFolder.DeleteTask("Test");
      }
   }
}

或者,您可以使用本机 API或使用Quartz.NET。请参阅了解详情。


3
是的,您需要下载并引用Microsoft.Win32.TaskScheduler.dll。链接在答案中。
德米特里(Dmitry)

是的,我以为我确实添加了参考文献,但由于某种原因,它没有加入。抱歉,这确实很棒。感谢您的帮助
-Boardy

1
@Dmitry您如何开始任务?您需要使用Windows Scheduler或其他工具注册它吗?
Haroon

2
我看到参考是针对win32的,如果我的服务器是64bit怎么办?
Seichi

2
由于CodePlex将在几个月后关闭,因此请注意nuget.org/packages/TaskScheduler的Task Scheduler Managed Wrapper的NuGet页面。
大卫·A·格雷

30

这对我 有用https://www.nuget.org/packages/ASquare.WindowsTaskScheduler/

它是精心设计的Fluent API。

//This will create Daily trigger to run every 10 minutes for a duration of 18 hours
SchedulerResponse response = WindowTaskScheduler
    .Configure()
    .CreateTask("TaskName", "C:\\Test.bat")
    .RunDaily()
    .RunEveryXMinutes(10)
    .RunDurationFor(new TimeSpan(18, 0, 0))
    .SetStartDate(new DateTime(2015, 8, 8))
    .SetStartTime(new TimeSpan(8, 0, 0))
    .Execute();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.