Створення планових завдань


148

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

Як я можу робити це і що мені потрібно використовувати директиви та довідки, оскільки я не знаходжу багато під час пошуку в Інтернеті.


2
Все, що вам потрібно, тут: msdn.microsoft.com/en-us/library/aa383614(v=vs.85).aspx . API, приклади та пояснення, як досягти того, що потрібно програмно.
kroonwijk

Відповіді:


214

Ви можете використовувати керований програміст завдань, який планується :

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
@Dmitry, як ти починаєш завдання? Вам потрібно зареєструвати це у планувальнику Windows чи щось таке?
Харун

2
Я бачу, посилання на win32, що робити, якщо мій сервер має 64 біт?
Сейчі

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();
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.