C# Quartz.ScheduleException:实例化类时出现问题-Quartz未按预期执行
这是我的C# Quartz.ScheduleException:实例化类时出现问题-Quartz未按预期执行,c#,windows-services,quartz.net,C#,Windows Services,Quartz.net,这是我的作业,需要每一分钟执行一次,它依赖于记录器 public class RefreshJob :IJob { public RefreshJob(IContainerFactory containerFactory) { _logger = containerFactory.GetInstance<ILogger>(); } public Task Execute(IJobExecutionContext c
作业
,需要每一分钟执行一次,它依赖于记录器
public class RefreshJob :IJob
{
public RefreshJob(IContainerFactory containerFactory)
{
_logger = containerFactory.GetInstance<ILogger>();
}
public Task Execute(IJobExecutionContext context)
{
return Task.Run(() =>
{
_logger.Information("Executing sample job");
_logger.Information($"Name: {context.JobDetail.Key.Name}");
_logger.Information($"Description: '{context.JobDetail.Description}'");
_logger.Information($"Fire time utc: {context.FireTimeUtc:yyyy-MM-dd HH:mm:ss zzz}");
});
}
}
这就是我获取调度程序参考的方式
static async Task<IScheduler> GetScheduler()
{
var factory = new StdSchedulerFactory();
return await factory.GetScheduler();
}
但什么也没发生。顺便说一下,我正在使用Quartz
scheduler内部windows服务
public void Start()
{
Task<IScheduler> scheduler = GetScheduler();
scheduler.Wait();
_jobScheduler = scheduler.Result;
_jobScheduler.Start();
//Trigger
IJobDetail job = JobBuilder.Create<RefreshCacheJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("RefreshJob", "GroupName")
.StartAt(DateTime.Now)
.WithPriority(1)
.Build();
_jobScheduler.ScheduleJob(job, trigger);
}
更新了错误
Quartz.ScheduleException:实例化类“Scheduler.RefreshJob”-->System.ArgumentException:无法实例化没有空构造函数的类型
参数名称:RefreshJob
Quartz需要一个对象来调用已执行的函数,请创建一个空构造函数来实例化Quartz可以使用的对象
这种行为的后果之一是作业必须具有无参数构造函数(在使用默认JobFactory实现时)
Quartz需要一个对象来调用已执行的函数,请创建一个空构造函数来实例化Quartz可以使用的对象
这种行为的后果之一是作业必须具有无参数构造函数(在使用默认JobFactory实现时)
乍一看它看起来不错。可能会抛出一些异常,但您看不到它们。您是否尝试了一些日志记录或添加了一个以查看是否存在一些异常?它可以运行数秒->。WithCronSchedule(***?*),但不适用于任何其他cron表达式,如。WithCronSchedule(“4*0?***”)@Rabban添加了IsSchedulerListener,它有助于找到原因。看起来依赖注入是个问题。乍一看它看起来不错。可能会抛出一些异常,但您看不到它们。您是否尝试了一些日志记录或添加了一个以查看是否存在一些异常?它可以运行数秒->。WithCronSchedule(***?*),但不适用于任何其他cron表达式,如。WithCronSchedule(“4*0?***”)@Rabban添加了IsSchedulerListener,它有助于找到原因。似乎依赖注入是个问题。但如果我需要将服务(例如UserService)注入到我的作业中呢?但是如果我需要将服务(例如UserService)注入到我的作业中呢?
public void Start()
{
Task<IScheduler> scheduler = GetScheduler();
scheduler.Wait();
_jobScheduler = scheduler.Result;
_jobScheduler.Start();
//Trigger
IJobDetail job = JobBuilder.Create<RefreshCacheJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("RefreshJob", "GroupName")
.StartAt(DateTime.Now)
.WithPriority(1)
.Build();
_jobScheduler.ScheduleJob(job, trigger);
}