我正在使用Quartz并使用示例代码并得到以下错误:
CS0738'EmailJob'未实现接口member
IJob.Execute(IJobExecutionContext)。EmailJob.Execute(IJobExecutionContext)无法实现,IJob.Execute(IJobExecutionContext)因为它>没有匹配的返回类型Task。
这是我第一次来Quartz,所以任何帮助将不胜感激。
public class EmailJob : IJob // <<<--- Error on this line
{
public void Execute(IJobExecutionContext context)
{
using (var message = new MailMessage("user@gmail.com", "user@live.co.uk"))
{
message.Subject = "Test";
message.Body = "Test at " + DateTime.Now;
using (SmtpClient client = new SmtpClient
{
EnableSsl = true,
Host = "smtp.gmail.com",
Port = 587,
Credentials = new NetworkCredential("user@gmail.com", "password")
})
{
client.Send(message);
}
}
}
public class JobScheduler
{
public static void Start()
{
IScheduler scheduler = (IScheduler)StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<EmailJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInHours(24)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))
)
.Build();
scheduler.ScheduleJob(job, trigger);
}
}
Run Code Online (Sandbox Code Playgroud)
我直接从这篇精彩的文章中获得了代码:http : //www.mikesdotnetting.com/article/254/scheduled-tasks-in-asp-net-with-quartz-net
我刚刚测试了你的代码,它编译时没有我这边的任何更改。您的问题可能是错误的名称空间导入。您可以尝试使用完整的命名空间,如下所示:
public class EmailJob : Quartz.IJob
{
public void Execute(Quartz.IJobExecutionContext context)
{
using (var message = new MailMessage("user@gmail.com", "user@live.co.uk"))
{
message.Subject = "Test";
message.Body = "Test at " + DateTime.Now;
using (SmtpClient client = new SmtpClient
{
EnableSsl = true,
Host = "smtp.gmail.com",
Port = 587,
Credentials = new NetworkCredential("user@gmail.com", "password")
})
{
client.Send(message);
}
}
}
// ...
}
Run Code Online (Sandbox Code Playgroud)