Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Quartz.ScheduleException:实例化类时出现问题-Quartz未按预期执行_C#_Windows Services_Quartz.net - Fatal编程技术网

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);
}