错误#CS0738'通知'没有实现接口成员' IJob.Execute(IJobExecutionContext)'。 ' Notification.Execute(IJobExecutionContext)'

时间:2018-06-02 16:28:19

标签: c# quartz.net quartz ijobfactory

using System;
using Quartz;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace hatirlaticiapp
{
    public class Notification : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            JobDataMap data = context.JobDetail.JobDataMap;
            Task task = (Task)data["Task"];
            task.OnNotificationStarted(task, EventArgs.Empty);
        }
    }
}

对于这行代码,我收到了这样的警告。

错误:

  

错误CS0738'通知'没有实现接口成员   ' IJob.Execute(IJobExecutionContext)&#39 ;.   ' Notification.Execute(IJobExecutionContext)'无法实施   ' IJob.Execute(IJobExecutionContext)'因为它没有   匹配返回类型'任务'。

编辑1:添加我的日程安排代码



 public class NotificationController : IController<Task>
    {
        ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
        IScheduler scheduler;

        public NotificationController()
        {
            
            scheduler = schedulerFactory.GetScheduler();
            scheduler.Start();
        }
&#13;
&#13;
&#13;

我也在这里收到此错误

错误: 无法隐式转换类型System.Threading.Tasks.Task&#39;到#Quartz.IScheduler&#39;。存在显式转换(您是否错过了演员?)

请帮帮我......

2 个答案:

答案 0 :(得分:1)

查看https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/index.html可能会有所帮助,因为看起来您的某些代码是针对2.2版编写的,但错误消息会建议您使用版本3.

特别是你的第二个错误可能是因为你缺少了等待,即

  scheduler = schedulerFactory.GetScheduler();
  scheduler.Start();

应该是

  scheduler = await schedulerFactory.GetScheduler();
  await scheduler.Start();

你的第一个签名应该是

  public async Task Execute(IJobExecutionContext context)

并且可能您需要在实际代码中使用await

答案 1 :(得分:0)

阅读整个例外,最后说

... because it does not have the matching return type of 'Task'.

将回复率从void更改为Task