171 votes

Création de tâches planifiées

Je travaille sur un projet WPF en C#. Je dois permettre à l'utilisateur de créer et d'ajouter une tâche planifiée au planificateur de tâches de Windows.

Comment puis-je m'y prendre et de quelles directives et références ai-je besoin, car je ne trouve pas grand-chose en cherchant sur Internet.

2 votes

Tout ce dont vous avez besoin est ici : msdn.microsoft.com/fr/us/library/aa383614(v=vs.85).aspx . API, des exemples et des explications sur la manière d'obtenir ce dont vous avez besoin par voie programmatique.

254voto

Dmitry Points 10118

Vous pouvez utiliser Wrapper géré par le planificateur de tâches :

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");
      }
   }
}

Vous pouvez également utiliser indigène API ou opter pour Quartz.NET . Voir ce pour les détails.

3 votes

Oui, vous devez télécharger et référencer Microsoft.Win32.TaskScheduler.dll. Le lien est dans la réponse.

0 votes

Oui, désolé, je pensais avoir ajouté la référence mais pour une raison quelconque, elle ne l'était pas. Désolé pour ça, mais ça marche très bien. Merci pour votre aide

1 votes

@Dmitry comment démarre-t-on une tâche ? Faut-il l'enregistrer dans le planificateur de Windows ou autre ?

41voto

Uday Reddy Points 311

Cela fonctionne pour moi https://www.nuget.org/packages/ASquare.WindowsTaskScheduler/

C'est une API Fluent bien conçue.

//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();

0voto

Jitesh Byahut Points 21
private void CreateTaskRunOnce()
{       
   using (TaskService ts = new TaskService())
   {
     TaskDefinition td = ts.NewTask();
     td.RegistrationInfo.Description = "My first task scheduler";
     td.Triggers.Add(new TimeTrigger(){StartBoundary=Convert.ToDateTime("17-08-2014 16:30:00")});

     td.Actions.Add(new ExecAction(@"C:/sample.exe", null, null));
     ts.RootFolder.RegisterTaskDefinition("TaskName", td);
   }       
}

Créez des tâches, des planificateurs qui s'exécutent une fois, quotidiennement, hebdomadairement, toutes les heures et bien d'autres choses encore. TaskScheduler.dll tutoriel, s'il vous plaît visitez la page ci-dessous.

http://www.asphelps.com/Asp.Net/TaskScheduler.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X