2016-06-21 108 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)

相關問題