Creating Scheduled Tasks

后端 未结 2 1811
半阙折子戏
半阙折子戏 2020-11-22 07:41

I am working on a C# WPF project. I need to allow the user to create and add a scheduled task to the Windows Task Scheduler.

How could I go about doing this and wha

相关标签:
2条回答
  • 2020-11-22 07:55

    This works for me https://www.nuget.org/packages/ASquare.WindowsTaskScheduler/

    It is nicely designed 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();
    
    0 讨论(0)
  • 2020-11-22 08:16

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

    Alternatively you can use native API or go for Quartz.NET. See this for details.

    0 讨论(0)
提交回复
热议问题