How to implement Quartz.net Scheduler for simple H

2019-09-12 07:26发布

问题:

The following code produces the following error:

Imports Quartz
Imports Quartz.Impl

Public Class InsertRssFeedJob
    Implements IJob

    Public Sub Execute(context As JobExecutionContext)
        Dim rssContoller = New RssController()
        rssController.InsertRssFeedItem("")
    End Sub

End Class

Error 1 Class 'InsertRssFeedJob' must implement 'Sub Execute(context As IJobExecutionContext)' for interface 'Quartz.IJob'. C:\Users\darchual\documents\visual studio 2010\Projects\MyBlog\MyBlog\QuartzScheduler\Class1.vb 5 16 MyBlog

I have added the library package reference and can import Quartz successfully, but "Implements IJob" has a blue line underneath of it and displays the error above. What can I do? Thank you.

回答1:

This is How I use it (first create scheduleFactory, in a different class/Sub)...

Dim schedFact As ISchedulerFactory = New StdSchedulerFactory()

' get a scheduler
Dim sched As IScheduler = schedFact.GetScheduler()
sched.Start()

' construct job info
Dim jobDetail As New JobDetail(TriggerName, Nothing, GetType(cls_schedule))
Dim trigger As Trigger = TriggerUtils.MakeDailyTrigger(hour, min)

trigger.StartTimeUtc = DateTime.UtcNow
trigger.Name = TriggerName
sched.ScheduleJob(jobDetail, trigger)

I passed the class name "cls_schedule" to JobDetail, Then you can use your class (which was passed as parameter) to Excute the actuall task.

Public Class cls_schedule
    Implements IJob

    Public Sub Execute(ByVal context As Quartz.JobExecutionContext) Implements Quartz.IJob.Execute
        Dim jobType As String = context.Trigger.Name
                 ' Your Code Goes here
    End sub


回答2:

it is the signature on the execute method, change it to IJobContext, that should solve it.