Quartz.net - 不会触发来自不同程序集的作业。调试方法?

时间:2012-01-27 10:10:36

标签: .net quartz.net .net-assembly

我正在尝试使用quartz.net(http://quartznet.sourceforge.net/)。我把调度表包装在我自己的单例类中,它暴露了一个简单的“+ AddNewJob(JobFacade)”。 JobFacade对象:

  1. 实现实现IJOB 接口的IJobFacade接口。
  2. 撰写AbstractTrigger类的实现。 (在测试时,此触发器被忽略)。
  3. 在尝试调试未调用作业的原因时,我已将触发器对象硬编码为以5(/ 10/15 / etc。)秒开始。 AddNewJob方法现在看起来像这样:

    public void AddNewJob(IJobFacade i_PromotionJobFacade)
    {
        IJobDetail detail = JobBuilder.Create(i_PromotionJobFacade.GetType())
                .WithIdentity(i_PromotionJobFacade.JobId)
                .Build();
    
        var triggerNew = TriggerBuilder.Create()
                .StartAt(DateTime.UtcNow.AddSeconds(5))
                .Build();
    
        m_Schedular.ScheduleJob(detail, triggerNew);
    }
    

    正在类的私有构造函数上启动调度程序:

    m_SchedulerFactory = new StdSchedulerFactory();
    m_Schedular = m_SchedulerFactory.GetScheduler();
    

    执行方法只包含一个Console.WriteLine行(以及一个当前从未被踩过的断点)。

    结果摘要:

    1. 在Quartz的同一个程序集中添加一个虚拟类 的IJob时,正在调用这些作业。
    2. 从程序集外部添加IJob(IJobFacade)时,永远不会调用 Execute 方法。
    3. 我基本上已经尝试了所有我能想到的东西。 任何想法?

      P.S 石英是否会产生任何日志(可能会抛出一些异常)。

0 个答案:

没有答案