错误 #CS0738 'Notification' 未实现接口成员 'IJob.Execute(IJobExecutionContext)'。 'Notification.Execute(IJobExecutionContext)'

Error #CS0738 'Notification' does not implement interface member 'IJob.Execute(IJobExecutionContext)'. 'Notification.Execute(IJobExecutionContext)'

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);
        }
    }
}

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

错误:

Error CS0738 'Notification' does not implement interface member 'IJob.Execute(IJobExecutionContext)'. 'Notification.Execute(IJobExecutionContext)' cannot implement 'IJob.Execute(IJobExecutionContext)' because it does not have the matching return type of 'Task'.

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

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

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

我也遇到这个错误

错误: 无法将类型 'System.Threading.Tasks.Task<Quartz.IScheduler>' 隐式转换为 'Quartz.IScheduler'。存在显式转换(是否缺少转换?)

请帮帮我...

阅读整个异常,最后它说

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

将 return 从 void 更改为 Task

查看 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