Quartz .NET Scheduler v2.4.1 在重复 10 次后停止

Quartz .NET Scheduler v2.4.1 stops after 10 repeats

我有一个使用 Quartz .NET Scheduler v2.4.1 的简​​单控制台应用程序 它只是在写实际时间。

当我构建我的应用程序时,它只工作了 10 次然后就停止了。

class Program
{
    static void Main(string[] args)
    {
        MySchedule.GetValue();
    }
}

public static class MySchedule
{
    public static void GetValue()
    {
        var scheduler = StdSchedulerFactory.GetDefaultScheduler();

        scheduler.Start();

        var job = JobBuilder.Create<MyJob>().Build();

        var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(builder =>

        builder.WithIntervalInSeconds(1)
        .OnEveryDay()
        .StartingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(9, 40, 0))).Build();

        scheduler.ScheduleJob(job, trigger);
    }
}

  public class MyJob : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine($"{DateTime.Now.ToString(new CultureInfo("en"))}");
            Console.ReadLine();
        }
    }

我查看了配置文件以更改 threadCount,但它对我不起作用。

如有帮助将不胜感激。

提前致谢。

你的程序根本不等待。您的 Main 方法刚刚结束。如果您希望程序 运行 更长,请等待。例如 Console.ReadLine。然后,您可以从您的工作中删除用户交互。您可能还想在程序 运行ning 时处理调度程序,我不知道如果垃圾收集器发现您已删除对它的最后引用会发生什么。

class Program
{
    static void Main(string[] args)
    {
        var scheduler = MySchedule.GetValue();

        Console.WriteLine("Scheduler started. Press [Enter] to quit.");
        Console.ReadLine();
    }
}

public static class MySchedule
{
    public static IScheduler GetValue()
    {
        var scheduler = StdSchedulerFactory.GetDefaultScheduler();

        scheduler.Start();

        var job = JobBuilder.Create<MyJob>().Build();

        var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(builder =>

        builder.WithIntervalInSeconds(1)
        .OnEveryDay()
        .StartingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(9, 40, 0))).Build();

        scheduler.ScheduleJob(job, trigger);

        return scheduler;
    }
}

public class MyJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        Console.WriteLine(DateTime.Now.ToString(new CultureInfo("en")));
    }
}