我是C#的新手,我一直在努力学习Quartz调度器.我一直在try 执行下面的代码,但我怀疑为什么调度程序没有进入HelloJob类.我是不是做错了什么?

如果这是一个愚蠢的错误,但现在一段时间内没有任何积极的结果,我深表歉意.

这是我的代码:

public class Program
{
    public static async Task Main(string[] args)
    {
        StdSchedulerFactory factory = new StdSchedulerFactory();
        IScheduler scheduler = await factory.GetScheduler();
            
        CancellationToken stoppingToken = CancellationToken.None;
            
        await DoSomething(scheduler, stoppingToken);
    }

    public async Task DoSomething(IScheduler scheduler, CancellationToken ct)
    {
        var job = JobBuilder.Create<HelloJob>()
                            .WithIdentity("name", "group")
                            .Build();

        var trigger = TriggerBuilder.Create()
                                    .WithIdentity("name", "group")
                                    .WithSimpleSchedule()
                                    .StartNow()
                                    .Build();

        await Console.WriteLineAsync("Job is still in Main class")
        await scheduler.ScheduleJob(job, trigger, ct);
    }
}

public class HelloJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        await Console.WriteLineAsync("Job Entered HelloJob class")
    }
}

推荐答案

调度程序尚未启动,需要调用其Start方法.从Quartz docs人起:

IScheduler.Start

启动触发的IScheduler英尺S线程.第一次创建调度程序时,它处于"待机"模式,不会触发触发器.

比如:

public static async Task Main(string[] args)
{
    ...
        
    await DoSomething(scheduler, stoppingToken);

    await scheduler.Start();
    await Task.Delay(TimeSpan.FromSeconds(1));
    await scheduler.Shutdown(true);
}

(以here为例)

Csharp相关问答推荐

CS0103 dlibdotnet和www.example.com facerect不在上下文中

一小时后,自定义缓存停止在App Insight中保存

"virtual"修饰符对接口成员有什么影响?

当前的文化决定了错误的文化

Unix上的.NET(核心):.NET意外地未看到通过P/Invoke系统调用对环境变量进行的进程内修改

如何使用自定义负载均衡器管理Ocelot负载均衡器中的多线程和批读取

C#DateTime.ParseExact不使用特定日期

.NET并发词典交换值

BFF到具有AAD/Entra ID B2C的内部API(.NET/ASP.NET核心/标识.Web)

使用CollectionView时在.NET Maui中显示数据时出现问题

源代码生成器:CS8795分部方法';Class1.GetS2(字符串)';必须有实现部分,因为它有可访问性修饰符?

如何正确处置所有动态控件?

将J数组转换为列表,只保留一个嵌套的JToken

如何在C#.NET桌面应用程序中动态更改焦点工具上的后退 colored颜色

Xamarin.Forms中具有类似AspectFill的图像zoom 的水平滚动视图

映射器-如何映射到多个实体

在.Net 8 Visual Studio 2022中启用本机AOT发布时发布失败

如何在flutter dart中使用publicKey.xml文件进行rsa加密,我遇到了问题Exception:Could not parse BigInt

我应该使用IMhemyCache来存储承载令牌,还是应该为Azure函数中的401个错误实施Polly重试策略?

如何提高C#中比较大 struct 的性能?