我创建了一个每天下午 5:00 运行的程序。但是当我调试程序时控制台始终保持打开状态 我想调试一次关闭我的电脑和 demin 当我打开我的电脑而不运行程序时应用程序在下午 5:00 自动运行
var DailyTime = "5:00:00";
var timeParts = DailyTime.Split(new char[1] { ':' });
while (true)
{
var dateNow = DateTime.Now;
var date = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day,
int.Parse(timeParts[0]), int.Parse(timeParts[1]), int.Parse(timeParts[2]));
TimeSpan ts;
if (date > dateNow)
ts = date - dateNow;
else
{
date = date.AddDays(1);
ts = date - dateNow;
}
Task.Delay(ts).Wait();
Copie();
FichierTrace.Close();
Console.Read();
最佳答案
我为您提供了两种可能的解决方案,但首先,您必须执行以下任一操作:
- 扔掉所有“计时”代码。
- 扔掉无限循环“while(true)...”
- 将其归结为应该完成的任务,而不是其他。
然后您可以:
- 使用 Windows 任务计划程序并设置触发器以在每天下午 5:00 执行该程序
或者
- 围绕它编写一个 Windows 服务,您将其注册为在启动时自动启动。然后,该服务使用一些调度框架(例如 Quartz1)来调度将执行实际任务的作业。
如果您考虑一下,您可能会发现 1.) 更容易做到。 2.) 为您提供不同的选项,但我认为简单的控制台程序和 Windows Scheduler 在这里应该足够了。并且您以后仍然可以对其进行改进。
脚注
1 我不隶属于 Quartz.NET 项目。这只是我碰巧认识的一个。
关于C# 是否可以在 Visual Studio 打开的情况下每天在指定时间运行一个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64275737/