Quartz.NET 三层架构 С#

Quartz.NET three level architecture С#

有一个class继承自IJob接口。此 class 的一个实例是通过接口的实现创建的。在这个 class 的构造函数中,我调用了一个方法来启动石英 ExecuteTimeBuilder.Start();

public class CalculateManager : ICalculateManager, IJob
    {
        private readonly IStrongDataRepository _strongDataRepository;


        public CalculateManager(IStrongDataRepository strongDataRepository)
        {

            _strongDataRepository = strongDataRepository;

            ExecuteTimeBuilder.Start();
        }

        public async Task Execute(IJobExecutionContext context)
        {
            Console.WriteLine("HelloJob is executing.");
        }

方法.Start()

public static async void Start()
        {
            IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
            await scheduler.Start();

            IJobDetail job = JobBuilder.Create<CalculateManager>()
                .Build();

            ITrigger trigger = TriggerBuilder.Create()  
                .WithIdentity("trigger1", "group1")     
                .StartNow()                           
                .WithSimpleSchedule(x => x           
                    .WithIntervalInSeconds(10)    
                    .RepeatForever())         
                .Build();        
            await scheduler.ScheduleJob(job, trigger);   
        }

Execute 方法只是没有开始工作。这是控制台应用程序。Core 3.0 接口在自定义 StartUp class

中注册
public void ConfigureServices(IServiceCollection services)
        {
            services.AddLogging();
            services.AddSingleton<IConfigurationRoot>(Configuration);

            services.AddSingleton<IStrongDataRepository, StrongDataRepository>();

            services.AddSingleton<ICalculateManager, CalculateManager>();

            services.AddDbContext<ApplicationDBContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        }

为什么我的方法 Task Execute(IJobExecutionContext context) 没有显示生命迹象。它不叫。

它不起作用,因为我在构造函数为空的另一个实例上调用它。我需要反思并在其他实例中调用我的方法。正在工作