Как запустить существующую запланированную задачу с аргументами? - PullRequest
0 голосов
/ 22 мая 2018

У меня запущено приложение .NET, и я хочу, чтобы оно запускало задачу, которую я уже запланировал с помощью планировщика задач Windows.Задача написана как собственное консольное приложение.

Я попытался перечислить аргументы в функции: Run (arg1, arg2), но после прочтения документации я узнал, что это неправильно.

Задачей будет удаление определенных типов записей (определенных как перечисление)

Приложение ASP.NET :

using (var ts = new TaskService())
{
    var deleteRecords = ts.FindTask("DeleteRecords");
    deleteRecords.Run(); //Want to Pass Args into this task
}

Задача

namespace DeleteRecords {
    class Program {
        static void Main(string[] args) {
             string recordName = args[0];
             string recordType = args[1];
             //Then get and Delete Delete Record
        }
    }
}

Прямо сейчас, когда я использую приложение ASP.NET, оно порождает задачу, но завершается с ошибкой вне индекса, что имеет смысл, поскольку аргументы не определены.

1 Ответ

0 голосов
/ 05 июня 2018

Я провел много исследований, и вы не можете запланировать задачу в диспетчере задач, а затем запустить ее динамически с параметрами.Любые параметры, с которыми вы его запускаете, являются частью определения запланированной задачи, что имеет смысл.

При этом существует способ обойти это: в своем коде вы можете на лету планироватьновое задание и зарегистрируйте его с вашими параметрами, , который указан в ссылке @Mikaal Anwar выше , но если вам нужно вызвать задачу с некоторыми другими параметрами, вам нужно будет выполнить другое идентичное задание,но ж / разные параметры.Это может быть проблематично, потому что, скажем, если вы пытаетесь запустить запланированную задачу от имени другого пользователя, а не от того, кто ее вызывает, вам нужно будет предоставить информацию об этом пользователе при регистрации задачи (среди прочего).Однако, если такие вещи не являются проблемой, то это вполне исправное решение.

В качестве альтернативы, в моем случае я остановился на том, чтобы называть мое вторичное консольное приложение подпроцессом.У него есть другие проблемы, которых нет у запланированной задачи, но он позволяет мне каждый раз передавать новые параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...