运行 如何在不使用 sheduler 或 windowservice 的情况下每天在特定时间执行任务
How run a task everyday at a particular time without using sheduler or windowservice
我想要一个任务 (.exe) 到 运行 每天 8:55 上午,它将跨越 30 miniutue.so 我创建了一个控制台应用程序来启动该任务 (.exe ) 通过使用 process.start()
。我不想要 sheduler 或 windowservice 而我对控制台很满意 application.But 控制台应用程序中使用的逻辑有时会失败,即不调用任务 (.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);
}
编辑
我只需要 运行 使用控制台应用程序完成一次任务,一天不超过
因为你的条件是漏秒。 Thread.Sleep(1000) 不能保证它会在每秒为 0 时准确暂停,因此您需要比这更聪明。
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");
}
我想要一个任务 (.exe) 到 运行 每天 8:55 上午,它将跨越 30 miniutue.so 我创建了一个控制台应用程序来启动该任务 (.exe ) 通过使用 process.start()
。我不想要 sheduler 或 windowservice 而我对控制台很满意 application.But 控制台应用程序中使用的逻辑有时会失败,即不调用任务 (.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);
}
编辑 我只需要 运行 使用控制台应用程序完成一次任务,一天不超过
因为你的条件是漏秒。 Thread.Sleep(1000) 不能保证它会在每秒为 0 时准确暂停,因此您需要比这更聪明。
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");
}