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;
我也在这里收到此错误
错误: 无法隐式转换类型System.Threading.Tasks.Task&#39;到#Quartz.IScheduler&#39;。存在显式转换(您是否错过了演员?)
请帮帮我......
答案 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
。