2016-03-24 4 views
0

私はジョブを適切に作成してスケジュールしました(ここではジョブとトリガーの作成は省略しています)。スケジューラが作成され、次のように開始されます。Quartz .net:JobListenerを使用すると、ジョブはトリガーされません

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

ジョブはスケジュールされた時刻に実行されます。

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を追加する場合

同じ結果:私が問題だった考え出し

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

答えて

1

まず、アドバイス:常にQuartz .netでデバッグを開始する前にログを設定してください。

ジョブが実行可能な状態になると、JobListenerに通知され、JobToBeExecutedメソッドが呼び出されます。 JobListenerの実装でわかるように、メソッドJobToBeExecutedに例外がスローされ、その例外によってジョブが実行されなくなります。

私はJobListenerのエラーによってジョブが実行されないようにすべき理由を調査しませんでした。私は、例外によって壊れた一連の呼び出しがあると思います。とにかく、これは私の質問に対する答えです。