Quartz .net:使用 JobListener,不会触发作业

Quartz .net: with a JobListener, Jobs are not triggered

我已经正确地创建并安排了一个Job(我这里不写Job和Trigger的创建,只是为了简单)。调度程序创建并启动如下:

_scheduler = New StdSchedulerFactory().GetScheduler
_scheduler.Start()

作业在预定时间执行。

然后我创建了一个非常简单的(目前是空的)JobListener:

Imports Quartz

Public Class JobListener
    Implements IJobListener

#Region "Public properties"

    Public ReadOnly Property Name As String Implements Quartz.IJobListener.Name
        Get
            Return "JOB_LISTENER"
        End Get
    End Property

#End Region

#Region "Methods"

    Public Sub JobExecutionVetoed(context As Quartz.IJobExecutionContext) Implements Quartz.IJobListener.JobExecutionVetoed
        Throw New NotImplementedException
    End Sub

    Public Sub JobToBeExecuted(context As Quartz.IJobExecutionContext) Implements Quartz.IJobListener.JobToBeExecuted
        Throw New NotImplementedException
    End Sub

    Public Sub JobWasExecuted(context As Quartz.IJobExecutionContext, jobException As Quartz.JobExecutionException) Implements Quartz.IJobListener.JobWasExecuted

    End Sub

#End Region

End Class

并将其添加到调度程序:

_scheduler = New StdSchedulerFactory().GetScheduler
_scheduler.Start()
_jobListener = New JobListener()
_scheduler.ListenerManager.AddJobListener(_jobListener, GroupMatcher(Of JobKey).AnyGroup())

现在作业不再执行。 任何提示为什么会发生?

如果我在启动调度程序之前添加 JobListener,结果相同:

_jobListener = New JobListener()
_scheduler = New StdSchedulerFactory().GetScheduler
_scheduler.ListenerManager.AddJobListener(_jobListener,  GroupMatcher(Of JobKey).AnyGroup())
_scheduler.Start()

我知道是哪个问题了。

首先,一个建议:在开始使用 Quartz .net 进行调试之前,始终配置日志。

当Job准备好执行时,通知JobListener,然后调用JobToBeExecuted方法。正如您在我的 JobListener 实现中看到的那样,我在 JobToBeExecuted 方法中抛出了一个异常,该异常阻止了作业的执行。

我没有调查为什么 JobListener 中的错误会阻止作业执行。我想有一连串的调用被异常破坏了。 无论如何,这就是我的问题的答案。