Создание запланированных задач

148

Я работаю над проектом C # WPF. Мне нужно разрешить пользователю создавать и добавлять запланированные задачи в планировщик задач Windows.

Как я могу сделать это и что мне нужно, используя директивы и ссылки, так как я мало что нахожу при поиске в Интернете.

Boardy
источник
2
Все, что вам нужно, находится здесь: msdn.microsoft.com/en-us/library/aa383614(v=vs.85).aspx . API, примеры и объяснения о том, как достичь того, что вам нужно программно.
kroonwijk

Ответы:

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. Ссылка есть в ответе.
Дмитрий
Да, извините, я думал, что я добавил ссылку, но по какой-то причине это не так. Извините за это работает отлично, хотя. Спасибо за вашу помощь
Boardy
1
@ Дмитрий, как ты начинаешь задание? Вам нужно зарегистрировать его с помощью планировщика Windows или что-то?
Haroon
2
Я вижу, что ссылка для win32, что если я мой сервер 64bit?
Seichi
2
Поскольку CodePlex закрывается через несколько месяцев, обратите внимание на страницу NuGet для управляемого планировщика заданий по адресу nuget.org/packages/TaskScheduler .
Дэвид А. Грей,
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();
Удай Редди
источник