Я использую Quartz.NET 3.0.7 в своем приложении для некоторых запланированных задач, но когда я запускаю планировщик, он увеличивает объем памяти, когда запускается планировщик. Я также проверял простую задачу расписания, которая выводит некоторый списокСтрока на консоли, та же проблема происходит в этом также. Я не могу понять, что является реальной проблемой. Мое наблюдение - IJob объект выпущен после того, как работа сделана. Я понятия не имею, кроме этого.
Я создаю задания динамически, передавая JobType
private IJobDetail GetJobDetailForType<TInput>(string jobKey, string jobGroup) where TInput : IJob
{
IJobDetail jobDetail = JobBuilder.Create<TInput>()
.WithIdentity(jobKey, jobGroup)
.Build();
return jobDetail;
}
И инициализирую расписание заданий в этой функции
private void InitializeSchedulerJob(ScheduleJob scheduleJob)
{
IJobDetail jobDetail;
ITrigger trigger = this.GetTrigger(scheduleJob.Code.ToString(), tenantCode, scheduleJob.CornSchedule);
if (scheduleJob.Code == (int)EnumHelper.Scheduler.Job.EmailJob)
{
this.logger.LogDebug($"EmailJob");
jobDetail = this.GetJobDetailForType<EmailJob>(scheduleJob.Code.ToString(), tenantCode);
}
this.scheduler.ScheduleJob(jobDetail, trigger);
}
Код задания электронной почты
public class EmailJob : IJob
{
private IServiceProvider serviceProvider;
public EmailJob(IServiceProvider serviceProvider)
{
this.serviceProvider = serviceProvider;
}
public async Task Execute(IJobExecutionContext context)
{
if (this.serviceProvider != null)
{
JobKey jobKey = context.JobDetail.Key;
IEmailScheduleSendService emailScheduleSendServiceNew = this.serviceProvider.GetRequiredService<IEmailScheduleSendService>();
ILogger<EmailJob> logger = this.serviceProvider.GetRequiredService<ILogger<EmailJob>>();
logger.LogDebug($"FROM EXECUTE METHOD | {jobKey.Name} | {jobKey.Group} | START");
await emailScheduleSendServiceNew.EmailScheduleSendAsync(context);
logger.LogDebug($"FROM EXECUTE METHOD | {jobKey.Name} | {jobKey.Group} | END");
}
}
}