本文介绍了如何每天通过Quartz.net发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图在asp.net MVC项目中每天使用Quartz.net发送电子邮件.但是它只能工作一次,不会每天重复.这是我的代码
I'm try to use Quartz.net send email at time on everyday in asp.net MVC project. But it's work only once, it's not repeat everyday. Here my code
public class EmailJob: IJob
{
private static Logger _logger = LogManager.GetCurrentClassLogger();
public void Execute(IJobExecutionContext context)
{
_logger.Info(DateTime.Now.ToString);
}
}
public static void Start()
{
IScheduler _scheduler = StdSchedulerFactory.GetDefaultScheduler();
_scheduler = StdSchedulerFactory.GetDefaultScheduler();
IJobDetail job = JobBuilder.Create<EmailJob>().WithIdentity("theJob_").StoreDurably(true)
.UsingJobData("para", 1).Build();
_scheduler.AddJob(job, true);
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger3")
.ForJob(job)
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0))
.Build();
_scheduler.ScheduleJob(trigger);
_scheduler.Start();
_logger.Info(DateTime.Now.ToString() + "_scheduler start");
}
我在全局调用"JobScheduler.Start()".有人可以告诉我我的代码在哪里错误吗?谢谢前进!
I call "JobScheduler.Start()" at global. Can anybody tell me where my code wrong? thank advance!
推荐答案
避免使用 .RepeatForever()
,而将 .WithDailyTimeIntervalSchedule
与 .StartingDailyAt
结合使用>
Avoid .RepeatForever()
, instead use .WithDailyTimeIntervalSchedule
with .StartingDailyAt
示例:
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
var hour = 12 //Start Time
var minute=15 //Start minute
IJobDetail job = JobBuilder.Create<Job_SendMail>().Build();
var time = DateTime.Now.AddSeconds(10);
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInHours(24)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(hour, minute, time.Second))
)
.Build();
scheduler.ScheduleJob(job, trigger);
这篇关于如何每天通过Quartz.net发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!