我想要一个任务(.exe)每天早上8:55运行,这将超过30个miniutue.so我创建了一个控制台应用程序,它将使用process.start()
启动该任务(.exe)。我我不喜欢sheduler或windowservice,而是对控制台应用程序很满意。但是控制台应用程序中使用的逻辑有时会失败,即不调用任务(.exe)。我使用while(true)
创建无限循环。我发布的代码(控制台代码),如何纠正
while (true)
{
if (DateTime.Now.Hour == 8 & DateTime.Now.Minute == 55 && DateTime.Now.Second == 0)
{
Process.Start(".exe");//not real code
}
else
Thread.Sleep(1000);
}
修改 我需要使用控制台应用程序只运行一次任务,而不是一天中的任务
答案 0 :(得分:2)
因为您的病情缺失了几秒钟。 Thread.Sleep(1000)不保证当每秒为0时它会被准确暂停,所以你需要比这更聪明。
答案 1 :(得分:1)
while (true)
{
var now = DateTime.Now;
var schedule = new DateTime(now.Year, now.Month, now.Day, 8, 55, 00);
if (schedule < now) schedule = schedule.AddDays(1);
Thread.Sleep(schedule.Subtract(now));
Process.Start(".exe");
}