2016-06-21 107 views
0

我正在用c#创建一个作业上传程序。我将所有工作信息保存在配置文件中。在任务计划程序中创建作业 - C#

当我创建一份工作时,我确实为该工作传递了一个独特的论点。

using (TaskService ts = new TaskService()) 
{ 
    TaskDefinition td = ts.NewTask(); 
    TimeTrigger trigger = new TimeTrigger(); 
    var startTime = TimeSpan.Parse(section1["ScheduledTime"]); 
          trigger.StartBoundary = DateTime.Today + startTime; 
    trigger.Repetition.Interval = TimeSpan.FromDays(1); 
    trigger.StartBoundary = DateTime.Now; 
    trigger.Id = "XXX"; 
    trigger.Repetition.Interval = TimeSpan.FromDays(1); 
    td.Triggers.Add(trigger); 
    td.Actions.Add(new ExecAction(@"C:/JobUpload.exe", argument, "")); 
    var foldername = ts.GetFolder(@"\Data"); 
    foldername.RegisterTaskDefinition(section1["JobName"], td); 
} 

在程序中,我必须检查该作业是否有任何参数。如果不存在任何参数(这发生在手动触发exe文件时),那么我必须触发方法A.另一方面,如果exe文件是通过任务调度程序中的作业触发的,那么它有参数与它相关联,所以我必须触发方法B.我不知道如何检查作业是否在C#中有任何参数。

任何帮助,将不胜感激。

编辑:

if (args.Length > 0) 
{ 
    Console.WriteLine("more than 1"); 
    Logger.Info("More than 1"); 
    Debug.WriteLine("More than 1"); 
} 
+0

您正在使用哪种开发平台? WPF?形式? – Kinani

+0

我只是使用控制台应用程序。 – user3447653

+0

你检查了[这个线程](http://stackoverflow.com/questions/11791969/c-sharp-check-if-you-have-passed-arguments-or-not)?您的问题与控制台应用程序的参数相关,而所有内容和标题与任务调度相关,完全不相关。阅读本文:[我如何提出一个好问题?](http://stackoverflow.com/help/how-to-ask) – Spidey

回答

0

C#控制台应用程序入口点的主要方法。

static int Main(string[] args) 

你可以看到有一个参数传递给你的应用程序。

你可以像任何普通数组一样访问它们。

if(args[0] == "X") 
    MethodOne(); 
else 
    MethodTwo(); 
+0

当我通过命令行运行该程序时,此工作正常。但是当.exe文件被触发时,我通过Task scheduler中的“添加参数(可选)”提供参数名称。但是这并不会在args [0]中被捕获。不知道它被捕获的位置。 – user3447653

+0

使用Task Scheduler时,args.Length == 0?记录输出以检查它。 – Kinani

+0

我是C#的新手,我编辑了问题中的代码。但是当我从任务调度器手动运行作业时,它不会打印任何内容。 – user3447653

0

在控制台应用程序,应该有一个Program.cs的一个static void Main(string[] args)方法。

通过命令行给出的任何参数都会被传递给args参数。如果没有传递参数中,该args.Length将为0

Command-Line Arguments (C# Programming Guide)

相关问题