There is a help file included with the download that provides an overview of the various classes. The Microsoft MSDN documentation provides an excellent overview of the Task Scheduler along with details around security and permission, idle conditions, and trigger repetition.
Tasks are accessed and can be enumerated through a TaskFolder. For systems supporting only the 1.0 library, there is only the root folder. The 2.0 library supports a hierarchal structure similar to a file system. The Tasks property exposes a TaskCollection instance which can enumerate tasks and provides an indexer which allows access to individual tasks by name. The TaskCollection class also has methods that allow for the creation/registration and deletion of tasks and subfolders by name.
A task is represented by a Task instance. The Task class provides information about tasks state and history and exposes the task's TaskDefinition through the Definition property.
A TaskDefinition exposes all of the properties of a task which allow you to define how and what will run when the task is triggered. A task must have at least one action and one trigger defined.
Each task has a list of triggers that determine when the task will be run. These are accessed through the Triggers property of a task definition which exposes a TriggerCollection instance. TriggerCollection provides an indexer which allows access to individual triggers by their position in the list. The TriggerCollection class also has methods that allow for the addition and removal of triggers. TriggerCollection implements the IList interface so you can also enumerate all tasks using the foreach construct.
The Trigger class is an abstract class that forms the foundation of the different types of triggers that can be specified for a task. There are 10 different specializations that provide different ways to specify the time a task will run. Not all specializations work with the 1.0 library. See the help file for details about each of the trigger classes. The Trigger Documentation has some examples of how to setup each kind of trigger.
The Action class is an abstract class that is the foundation for four different actions. On 1.0, only the ExecAction specialization is available. These actions determine what the service will do when a trigger is fired. The Action Documentation has some examples of how to setup each kind of action.
Below is a brief example of how to use the library from C#.
Here's the same as above but in VB.NET
If you're really into shorthand code, here's almost the same functionality as the C# code above, but much shorter:
- The Examples Page shows some C# code that demonstrates almost every function of the library.
- The Installation Page explains how to use this library in your own projects and includes a sample project.
Tasks are accessed and can be enumerated through a TaskFolder. For systems supporting only the 1.0 library, there is only the root folder. The 2.0 library supports a hierarchal structure similar to a file system. The Tasks property exposes a TaskCollection instance which can enumerate tasks and provides an indexer which allows access to individual tasks by name. The TaskCollection class also has methods that allow for the creation/registration and deletion of tasks and subfolders by name.
A task is represented by a Task instance. The Task class provides information about tasks state and history and exposes the task's TaskDefinition through the Definition property.
A TaskDefinition exposes all of the properties of a task which allow you to define how and what will run when the task is triggered. A task must have at least one action and one trigger defined.
Each task has a list of triggers that determine when the task will be run. These are accessed through the Triggers property of a task definition which exposes a TriggerCollection instance. TriggerCollection provides an indexer which allows access to individual triggers by their position in the list. The TriggerCollection class also has methods that allow for the addition and removal of triggers. TriggerCollection implements the IList interface so you can also enumerate all tasks using the foreach construct.
The Trigger class is an abstract class that forms the foundation of the different types of triggers that can be specified for a task. There are 10 different specializations that provide different ways to specify the time a task will run. Not all specializations work with the 1.0 library. See the help file for details about each of the trigger classes. The Trigger Documentation has some examples of how to setup each kind of trigger.
The Action class is an abstract class that is the foundation for four different actions. On 1.0, only the ExecAction specialization is available. These actions determine what the service will do when a trigger is fired. The Action Documentation has some examples of how to setup each kind of action.
Below is a brief example of how to use the library from C#.
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"); } } }
Imports Microsoft.Win32.TaskScheduler Module Module1 Sub Main() Using ts As New TaskService() ' Create a new task definition and assign properties Const taskName As String = "Test" Dim td As TaskDefinition = ts.NewTask td.RegistrationInfo.Description = "Does something" ' Add a trigger that will fire every other week on Monday and Saturday and ' repeat every 10 minutes for the following 11 hours Dim wt As New WeeklyTrigger() wt.DaysOfWeek = DaysOfTheWeek.Monday Or DaysOfTheWeek.Saturday wt.WeeksInterval = 2 wt.StartBoundary = Now wt.Repetition.Duration = TimeSpan.FromHours(11) wt.Repetition.Interval = TimeSpan.FromMinutes(10) td.Triggers.Add(wt) ' Add an action (shorthand) that runs Notepad td.Actions.Add(New ExecAction("notepad.exe", "C:\Test.log")) ' Register the task in the root folder ts.RootFolder.RegisterTaskDefinition(taskName, td) ' Remove the task we just created ts.RootFolder.DeleteTask(taskName) End Using End Sub End Module
using System; using Microsoft.Win32.TaskScheduler; class Program { static void Main(string[] args) { new TaskService().AddTask("Test", new DailyTrigger { DaysInterval = 2 }, new ExecAction("notepad.exe", "c:\\test.log", null)); } }