2016-06-21 4 views
0

Ich erstelle ein Job-Upload-Programm in C#. Ich habe alle Jobinformationen in der Konfigurationsdatei gespeichert.Erstellen von Jobs im Taskplaner - C#

Wenn ich einen Job erstelle, übergebe ich ein eindeutiges Argument für diesen Job.

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); 
} 

Im Programm muss ich überprüfen, ob der Job Argumente hat. Wenn keine Argumente vorhanden sind (dies tritt auf, wenn die EXE-Datei manuell ausgelöst wird), muss ich die Methode A auslösen. Wenn die EXE-Datei über den Job im Taskplaner ausgelöst wird, dann muss sie dagegen die Methode A auslösen hat Argumente zugeordnet, so dass ich die Methode B triggern muss.

Ich bin nicht sicher, wie Sie überprüfen, ob ein Job Argumente in C# hat.

Jede Hilfe wäre willkommen.

Edit:

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

Welche Entwicklungsplattform verwenden Sie? WPF? Formen? – Kinani

+0

Ich benutze nur eine Konsolenanwendung. – user3447653

+0

Haben Sie [dieses Thema] überprüft (http://stackoverflow.com/questions/11791969/c-sharp-check-if-you-have-passed-arguments-or-not)? Ihre Frage bezieht sich auf Argumente für die Konsolenanwendung, während der gesamte Inhalt und der Titel auf die Aufgabenplanung bezogen sind, völlig irrelevant. Lesen Sie hierzu: [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask) – Spidey

Antwort

0

C# Konsolenanwendungs ​​Einspeisepunkt die wichtigste Methode ist.

Wie Sie sehen können, gibt es einen Parameter für diese Methode. Dies sind die Argumente, die an Ihre Anwendung übergeben werden.

Sie können auf sie wie jedes normale Array zugreifen.

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

Dies funktioniert, wenn ich das Programm über die Befehlszeile ausführe. Aber wenn die .exe-Datei ausgelöst wird, gebe ich den Argumentnamen über "Add arguments (optional)" im Task-Scheduler. Aber das wird nicht in args [0] eingefangen. Nicht sicher, wo es aufgenommen wird. – user3447653

+0

Wenn Sie Taskplaner verwenden, args.Length == 0? Protokollieren Sie die Ausgabe, um danach zu suchen. – Kinani

+0

Ich bin neu in C#, ich habe den Code in der Frage bearbeitet. Es wird jedoch nichts gedruckt, wenn ich den Job manuell aus dem Aufgabenplaner heraus ausführe. – user3447653

0

in Ihrer Konsole-Anwendung, sollte es mit einer static void Main(string[] args) Methode eine Program.cs sein.

Alle über die Befehlszeile übergebenen Argumente werden an den Parameter args übergeben. Wenn keine Argumente übergeben werden, wäre die args.length 0.

Siehe Command-Line Arguments (C# Programming Guide)

Verwandte Themen