Search code examples
c#.netscheduled-tasks

Wake the computer to run a certain task in C#


I want to check this box programatically:

context image

My current code:

TaskService tService = new TaskService();
TaskDefinition tDefinition = tService.NewTask();
tDefinition.Principal.DisplayName = tskName;
tDefinition.RegistrationInfo.Description = tskDesc;
DailyTrigger dtrigger = new DailyTrigger();
dtrigger.StartBoundary = start;
dtrigger.DaysInterval = ((short)repeat);
dtrigger.EndBoundary = end;
dtrigger.Enabled = true;
tDefinition.Triggers.Add(dtrigger);
tDefinition.RegistrationInfo.Author = PriUtilizador;
tDefinition.RegistrationInfo.Description = tskDesc;
tDefinition.RegistrationInfo.Date = DateTime.Now;

Solution

  • You can set this via TaskSettings.WakeToRun:

    TaskService tService = new TaskService();
    TaskDefinition tDefinition = tService.NewTask();
    
    // Here
    tDefinition.Settings.WakeToRun = true;
    
    tDefinition.Principal.DisplayName = tskName;
    tDefinition.RegistrationInfo.Description = tskDesc;
    DailyTrigger dtrigger = new DailyTrigger();
    dtrigger.StartBoundary = start;
    dtrigger.DaysInterval = ((short)repeat);
    dtrigger.EndBoundary = end;
    dtrigger.Enabled = true;
    tDefinition.Triggers.Add(dtrigger);
    tDefinition.RegistrationInfo.Author = PriUtilizador;
    tDefinition.RegistrationInfo.Description = tskDesc;
    tDefinition.RegistrationInfo.Date = DateTime.Now;
    

    The TaskScheduler documentation has nothing to do with the Task Scheduler program available in Windows.