【问题标题】:How to pass argument while calling Task Scheduler from c#如何在从 C# 调用任务计划程序时传递参数
【发布时间】:2017-07-26 10:43:14
【问题描述】:

在这里,我创建了用于编写 .txt 文件并使用此代码从 任务调度程序 传递参数的服务:

static void Main(string[] args)
    {

        string abc = string.Empty;
        foreach (var item in args)
        {
            abc += item +" ";
        }
        string path = @"D:\GST Project\Demo Text File.txt";
        File.WriteAllText(path, abc);
    }

我在任务调度器中添加了这样的任务:

我想使用 C# 代码调用我的调度程序任务 下面是我从Link 获取的代码

using (TaskService tasksrvc = new TaskService(server.Name, login, domain, password))
{
    Task task = tasksrvc.FindTask(taskName);
    task.Run();       
}

我想知道我们如何通过TaskService传递参数。还 我应该通过什么来代替 Server.Name、登录名、域、密码。 感谢您的帮助!

【问题讨论】:

  • 每次运行的参数都一样吗?还是每次运行都不同?
  • 为什么要这样调用调度任务呢?为什么不直接调用控制台应用程序? 是因为它是远程运行的吗?
  • @mjwills 我需要通过调度程序执行每个操作,而不是编写代码直接调用 exe,而且我从 c# 应用程序运行它,所以我将从 c# 代码传递参数。它也在远程运行
  • I need to perform every action through scheduler not write code to call exe directly 你能解释为什么存在这个约束(在你的帖子中)吗?为什么需要这样做?
  • @mjwills 在调度程序中我可以处理停止和启动但通过调用 exe 我需要终止进程我没有其他方法可以停止它。

标签: c# console-application taskscheduler


【解决方案1】:

试试下面的代码:- 这将帮助你

TaskService.Instance.AddTask("Test", QuickTriggerType.Daily, "Exe file path", "test");

这将安排您的任务并在您的 exe 文件中传递 test 参数

【讨论】:

  • 你知道它是否可以用这个库设置起始目录吗?我在github上查了一下,没找到,谢谢!
【解决方案2】:

我应该传递什么来代替 Server.Name、登录名、域、密码

serverName - 您要连接的计算机的名称。如果 serverName 参数为空,则此方法将在 本地计算机。

login - 在连接到 电脑。如果未指定用户,则当前令牌为 用过的。

domain - 在 user 参数中指定的用户的域。

password - 用于连接到计算机的密码。如果 未指定用户名和密码,则当前令牌为 用过

.

您可以使用 TaskDefinition 来传递参数和其他设置。请尝试以下方法传递参数

使用 (TaskService ts = new TaskService()) {

     TaskDefinition td = ts.NewTask();
     td.RegistrationInfo.Description = "Does something";

     //l fire the task at this time every day
     td.Triggers.Add(new DailyTrigger { DaysInterval = 1 });

     // Create an action that will launch Notepad and you can pass paremeters
     td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));

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


  }

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 2020-10-30
    • 2017-09-08
    • 2010-11-08
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    相关资源
    最近更新 更多