IJobDetail job = JobBuilder.Create 在同一实例中。 Quartz.NET

IJobDetail job = JobBuilder.Create in same instance. Quartz.NET

如果我不创建空构造函数,我的 Execute 将不起作用。

我的代码

 public class CalculateManager : ICalculateManager, IJob
    {
        static IStrongDataRepository _strongDataRepository;
        private readonly ICalculateProtocolOne  _calculateOne;
        private Dictionary<string, CalculateModel> _resultDictionary;
 
 public CalculateManager(IStrongDataRepository strongDataRepository,
            ICalculateOne calculateOne)
        {
            _calculateOne = calculateOne;
            _resultDictionary = new Dictionary<string, CalculateModel>();

            this.Start();
        }
        
        
       
        
        public async Task Execute(IJobExecutionContext context)
        {
            Console.WriteLine("Here");
            var x = _resultDictionary;
        }
        
        public CalculateManager()
        {

        }
        
        
        public async void Start()
        {
            TimeSpan startTime = new TimeSpan(16, 36, 0);
            DateTime now = DateTime.Today.Add(startTime);

            IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
            await scheduler.Start();

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

            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .StartAt(now)
                .WithSimpleSchedule(x => x
                    .WithIntervalInMinutes(2)
                    .RepeatForever())
                .Build();

            await scheduler.ScheduleJob(job, trigger);
        }

如果我不会创建空的构造函数。我的 quarz build 将无法运行。但是这样我有两个不同的实例。在这个 var x = _resultDictionary; 我有空。但实际上,当它在第一个实例中使用所有必要的接口创建时,_resultDictionary 中有很多来自计算的结果。我需要如何创建 IJobDetail job 它使用相同的实例。

我在 class 中创建了一个静态变量 static List<CalculateManager> _instanceList = new List<CalculateManager>();

并将所有实例放入此列表。当Quartz.NET开始执行。它在没有参数的构造器的实例上开始执行。我以这种方式罚款我的 Instatce。

var instance = _instanceList[0];