Запустить запланированную задачу с помощью C#

Я создал простую задачу. Он запускается при входе в систему каждого пользователя. Я также хотел бы запустить его сразу после создания -> сделать то, что делает «Выполнить» в графическом интерфейсе планировщика заданий. Я знаю, что могу запустить новый процесс и таким образом выполнить цель действия. Можно ли это сделать, просто используя объект TaskService? Это пример кода:

   using (TaskService ts = new TaskService()) {
        // Create a new task definition and assign properties
        TaskDefinition td = ts.NewTask();
        td.RegistrationInfo.Author = "Me";

        td.Principal.RunLevel = TaskRunLevel.Highest;

        td.RegistrationInfo.Description = "Starts Updater";
        td.Settings.DisallowStartIfOnBatteries = false;
        td.Settings.Enabled = true;
        td.Settings.ExecutionTimeLimit = TimeSpan.Zero;
        td.Settings.Hidden = false;
        td.Settings.IdleSettings.RestartOnIdle = false;
        td.Settings.IdleSettings.StopOnIdleEnd = false;
        td.Settings.Priority = System.Diagnostics.ProcessPriorityClass.High;
        td.Settings.RunOnlyIfIdle = false;
        td.Settings.RunOnlyIfNetworkAvailable = false;
        td.Settings.StopIfGoingOnBatteries = false;


        // Create a trigger that will fire the task at this time every other day
        td.Triggers.Add(new LogonTrigger());

        var fileName = Path.Combine(Environment.GetFolderPath("path_updater.exe");
        // Create an action that will launch Notepad whenever the trigger fires
        td.Actions.Add(new ExecAction(fileName, null, null));

        // Register the task in the root folder
        ts.RootFolder.RegisterTaskDefinition(@"Updater", td);

    }

person Robert Segdewick    schedule 18.02.2020    source источник
comment
См. следующее: social.technet .microsoft.com/wiki/contents/articles/. Просто измените запланированное время   -  person jdweng    schedule 18.02.2020
comment
@Robert, дайте мне знать, если обновленный ответ вам подходит;)   -  person Clint    schedule 22.02.2020


Ответы (1)


Точно так же, как если бы вы щелкнули правой кнопкой мыши созданную задачу и выбрали «Выполнить» в графическом интерфейсе TaskScheduler.

Вы можете использовать Task.Run() после того, как задача будет зарегистрирована таким образом

.
.
ts.RootFolder.RegisterTaskDefinition(@"Updater", td);
var runCreatedTask = ts.FindTask("Updater").Run(); //Runs the registered task immediately
person Clint    schedule 22.02.2020