使用 AppConfig 设置的任务计划
Task Scheduling using AppConfig settings
我有一个包含以下设置的配置文件:
<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);
}
如有任何帮助,我们将不胜感激。谢谢
您可以从 .config 中获取相同的值并将其解析为 TimeSpan
。
var startTime = TimeSpan.Parse(ConfigurationManager.AppSettings.Get("ScheduledTime"));
这将使 startTime
成为 TimeSpan
等于 16 小时 30 分钟
(我会对此进行一些验证,甚至可能不会直接从 AppSettings
中读取,但那是另一回事了。)
那你可以做
daily.StartBoundary = DateTime.Today + startTime;
我有一个包含以下设置的配置文件:
<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);
}
如有任何帮助,我们将不胜感激。谢谢
您可以从 .config 中获取相同的值并将其解析为 TimeSpan
。
var startTime = TimeSpan.Parse(ConfigurationManager.AppSettings.Get("ScheduledTime"));
这将使 startTime
成为 TimeSpan
等于 16 小时 30 分钟
(我会对此进行一些验证,甚至可能不会直接从 AppSettings
中读取,但那是另一回事了。)
那你可以做
daily.StartBoundary = DateTime.Today + startTime;