2016-04-28 8 views
0

ich eine Konfigurationsdatei mit den folgenden Einstellungen haben:Task-Scheduling AppConfig mit den Einstellungen

<add key ="Mode" value ="Daily"/> 

<add key="ScheduledTime" value="16:30"/> 

Basierend auf diesen Werten in der Konfigurationsdatei, ich brauche in meinem C# Programm den Job automatisch zu planen. Ich habe diesen Code versucht, aber es wirft einen Fehler:

When converting string to datetime, parse the string to take the date before putting each variable into DateTime object

TaskService ts = new TaskService() 
TaskDefinition td = ts.NewTask(); 
td.RegistrationInfo.Description = "RMATask"; 

if (ConfigurationManager.AppSettings.Get("Mode") == "Daily") 
{ 
    DailyTrigger daily = new DailyTrigger(); 
    daily.StartBoundary = Convert.ToDateTime(DateTime.Today.ToShortDateString() + ConfigurationManager.AppSettings.Get("ScheduledTime")); 
    daily.DaysInterval = 1; 
    td.Triggers.Add(daily); 
    td.Actions.Add(new ExecAction(@"C:/Bigdata/bigdatadev/Framework/ConsoleApplication1/bin/Debug/ConsoleApplication1.exe", null, null)); 
    ts.RootFolder.RegisterTaskDefinition(ConfigurationManager.AppSettings.Get("Tablename"), td); 
} 

Jede mögliche Hilfe würde geschätzt. Vielen Dank.

Antwort

0

Sie können denselben Wert aus .config nehmen und als TimeSpan analysieren.

var startTime = TimeSpan.Parse(ConfigurationManager.AppSettings.Get("ScheduledTime")); 

Das startTime ein TimeSpan gleich 16 Stunden und 30 Minuten

(ich einige Validierung um das setzen würde und vielleicht nicht einmal direkt von AppSettings zu lesen, aber das ist eine andere Geschichte.)

machen

Dann können Sie

daily.StartBoundary = DateTime.Today + startTime; 
tun