Код: Выделить всё
public class MyJob : IJob
{
private readonly ILogger _logger;
public MyJob(ILogger logger)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public Task Execute(IJobExecutionContext context)
{
_logger.LogDebug("It's working!");
}
}
Код: Выделить всё
IJobDetail jobDetail = JobBuilder.Create()
.WithIdentity("MyID", "MyGroup")
.Build();
var triggerBuilder = TriggerBuilder.Create()
.WithIdentity("MyID")
.StartAt(DateTime.Now)
.WithCronSchedule("*/1 * * * * ?"); // Every second
var trigger = triggerBuilder.Build();
_scheduler.ScheduleJob(jobDetail, trigger)
Код: Выделить всё
// Quartz configuration.
services.AddQuartz(q =>
{
// Add dependency injection.
q.UseMicrosoftDependencyInjectionScopedJobFactory(options =>
{
// if we don't have the job in DI, allow fallback
// to configure via default constructor
options.AllowDefaultConstructor = true;
});
});
services.AddTransient();
// Also tried services.AddTransient();
Quartz.SchedulerException: проблема с созданием экземпляра класса MyProject.MyNamespace.Myjob: Cannot создать экземпляр типа, не имеющего пустого конструктора
Имя параметра: MyJob' ---> System.ArgumentException: невозможно создать экземпляр типа, не имеющего пустого конструктора
Тем не менее, я явно настроил MS DI для использования Quartz, следуя их документации. Итак, как я могу внедрить зависимости? Я использую Quartz 3.2.4 и установил пакет Quartz.Extensions.DependencyInjection (также 3.2.4).
Подробнее здесь: https://stackoverflow.com/questions/667 ... -injection
Мобильная версия