0

下面的代碼產生以下錯誤:如何實現Quartz.net調度程序簡單的HelloWorld

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

我已經添加了庫包參考,並不能成功地導入石英,但「實現IJob」有它下面的藍線,並顯示上面的錯誤。我能做什麼?謝謝。

回答

2

這是我如何使用它(先創建scheduleFactory,在不同的類/子)......

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) 

我傳遞的類名「cls_schedule」來的JobDetail,然後你就可以使用你的類(它作爲參數傳遞)執行執行任務。

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 
+0

謝謝,highwingers。我在哪裏放這兩個?我以爲我應該在Global.asax的Application_Start()中放入一些東西。 – user1477388

+1

在app_code文件夾中創建兩個類,然後一個將有我上面提供的代碼,第二個將與您已有的代碼相同。 – highwingers

+1

上面的代碼我嘗試在Windows應用程序,但是如果它的一個Web應用程序,那麼你應該把Application_onstart,上面的代碼是日程安排設置(在app_onstart)。然後你的作爲參數傳遞給預定工廠的實體類將執行實際操作(每當作業被執行時)。請記住,當您在計劃中更改任何內容時,您需要重新啓動IIS,否則您的新更改將無法啓動。 – highwingers

1

它是執行方法上的簽名,將其更改爲IJobContext,應該解決它。

+0

我改變了我認爲是簽名但它似乎沒有工作。也許我做錯了。你可以發表一個例子你的意思,以便我們在同一頁上?謝謝你的幫助。 – user1477388