如果我不创建空构造函数,我的执行将无法正常工作。
我的代码
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
。
我在课堂上创建了一个静态变量static List<CalculateManager> _instanceList = new List<CalculateManager>()
;
并将所有实例放入此列表。当Quartz.NET启动时执行。它在没有参数的构造函数的实例上启动Execute。我以这种方式罚款我的身份。
var instance = _instanceList[0];