C# 是否可以在 Visual Studio 打开的情况下每天在指定时间运行一个程序?

标签 c#

我创建了一个每天下午 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();

最佳答案

我为您提供了两种可能的解决方案,但首先,您必须执行以下任一操作:

  1. 扔掉所有“计时”代码。
  2. 扔掉无限循环“while(true)...”
  3. 将其归结为应该完成的任务而不是其他

然后您可以:

  1. 使用 Windows 任务计划程序并设置触发器以在每天下午 5:00 执行该程序

或者

  • 围绕它编写一个 Windows 服务,您将其注册为在启动时自动启动。然后,该服务使用一些调度框架(例如 Quartz1)来调度将执行实际任务的作业。
  • 如果您考虑一下,您可能会发现 1.) 更容易做到。 2.) 为您提供不同的选项,但我认为简单的控制台程序和 Windows Scheduler 在这里应该足够了。并且您以后仍然可以对其进行改进。

    脚注

    1 我不隶属于 Quartz.NET 项目。这只是我碰巧认识的一个。

    关于C# 是否可以在 Visual Studio 打开的情况下每天在指定时间运行一个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64275737/

    相关文章:

    c# - 如何为单元测试填充 HttpWebResponse.GetResponseAsync()?

    c# - 获取 C :\Users Programmatically

    c# - WPF 项目中的语义版本控制

    c# - 如何让我的 wpf 应用程序等待 3 分钟后再重新加载数据?

    C# 类似于 Javascript 中的事件

    c# - 什么是C# 等同于C++ STL 填充方法

    c# - 通过ODBC直接向PostGres数据库插入DataTable

    c# - 使用 Where 子句将 csv 值读入字典

    Java通过JNI转C#无法加载C# dll

    c# - 从 JSON 中获取数据的困惑