IJobDetail作业= JobBuilder。在同一实例中创建。 Quartz.NET

问题描述 投票:0回答:1

如果我不创建空构造函数,我的执行将无法正常工作。

我的代码

 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版本无法正常工作。但是以这种方式,我有两个不同的实例。在此var x = _resultDictionary;中,我为空。但是实际上,当它创建带有所有必要接口的实例时,它们在_resultDictionary中的计算结果很多。我需要如何创建使用相同实例的IJobDetail job

c# quartz-scheduler
1个回答
0
投票

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

并将所有实例放入此列表。当Quartz.NET启动时执行。它在没有参数的构造函数的实例上启动Execute。我以这种方式罚款我的身份。

var instance = _instanceList[0];

© www.soinside.com 2019 - 2024. All rights reserved.