我有下面的 xml,我使用它读取预定的日期和时间以在预定的时间运行应用程序。
<AvSchedule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Days>
<Day Name="Monday">true</Day>
<Day Name="Tuesday">false</Day>
<Day Name="Wednesday">false</Day>
<Day Name="Thursday">false</Day>
<Day Name="Friday">false</Day>
<Day Name="Saturday">false</Day>
<Day Name="Sunday">false</Day>
</Days>
<Time Hour="12" Minutes="15" />
</AvSchedule>
下面是我为反序列化 xml 而编写的代码:
AvSchedule avSchedule = null;
private void Deserialize()
{
FileStream fs = File.OpenRead(@"C:\Scheduler.xml");
XmlSerializer serializer = new XmlSerializer(typeof(AvSchedule));
Object obj = serializer.Deserialize(fs);
if((obj != null) && (obj is AvSchedule))
{
avSchedule = obj as AvSchedule;
}
}
下面是我在服务启动时运行应用程序的实现。
protected override void OnStart(string[] args)
{
//System.Diagnostics.Debugger.Launch();
base.OnStart(args);
Deserialize();
Thread thr = new Thread( new ThreadStart(ScheduleThread));
thr.Start();
}
public void ScheduleThread()
{
//Process logic should go here
try
{
System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo();
processStartInfo.Arguments = "/Task {21211-A06D-4558-B833-98E8C7F62}";
processStartInfo.FileName = "C:\\Program Files (x86)\\Logic\application.exe";
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = processStartInfo;
process.Start();
}
catch (Exception e)
{
Console.WriteLine("Unable to run", e.Message);
}
}
}
///Sleep for 1 minute
Thread.Sleep(TimeSpan.FromMinutes(1));
}
}
现在我想在到达预定时间时运行上述应用程序。我需要将当前时间和日期与 xml 中的预定时间和日期进行比较,并按照预定的时间和日期运行应用程序。请为此提供实施帮助。
我还需要确保服务仅在达到预定时间和日期时运行(服务应该空闲,直到达到预定时间)