2016-04-28 68 views
0

我有以下設置的配置文件:任務調度設置

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

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

基礎上在配置文件中的這些價值觀,我需要在我的C#程序自動調度作業。我曾嘗試這個代碼,但它拋出一個錯誤:

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

任何幫助,將不勝感激。謝謝。

回答

0

您可以從.config獲取相同的值並將其解析爲TimeSpan

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

這將使startTime一個TimeSpan等於16小時30分鐘

(我把一些驗證周圍,也許甚至不AppSettings直接讀取但那是另一回事。)

然後你可以做

daily.StartBoundary = DateTime.Today + startTime;