所以我正在使用Hangfire计划作业,这些作业向用户发送提醒。每当我将Job设置为每个星期一运行时,例如14h00。如果我早上这样做,请在09h00说。第一次执行应该在14h00结束。问题是似乎发生了什么事,当我在仪表板中显示“下次执行是在7天之内。”>
这里输入代码:
public class ReminderTimeService : IReminderTimeService { private readonly IRecurringJobManager _recurringJobClient; public ReminderTimeService( IRecurringJobManager recurringJobClient) { _recurringJobClient = recurringJobClient; } public void ScheduleJobs(List<ReminderTime> reminderTimeList) { foreach (var reminder in reminderTimeList) { _recurringJobClient.AddOrUpdate<IProactiveMessageService>( // Job Id $"send-status-set-reminder-{reminder.Day.Substring(0, 3)}- {reminder.StartTime.Split(":")[0]}-{reminder.StartTime.Split(":")[1]}", // Service to run work c => c.SendStatusSetReminder(), // Repeat weekly GetWeekCronExpression(reminder.Day, reminder.StartTime), // Use local time TimeZoneInfo.Local); } private DayOfWeek GetDayOfTheWeek(string day) { switch (day) { case "Monday": return DayOfWeek.Monday; case "Tuesday": return DayOfWeek.Tuesday; case "Wednesday": return DayOfWeek.Wednesday; case "Thursday": return DayOfWeek.Thursday; case "Friday": return DayOfWeek.Friday; default: return DayOfWeek.Monday; } } private string GetWeekCronExpression(string day, string time) { var hour = Convert.ToInt16(time.Split(":")[0]); var minute = Convert.ToInt16(time.Split(":")[1]); var weekStartExp = Cron.Weekly(GetDayOfTheWeek(day), hour, minute); return weekStartExp; } } }
我的猜测是我根本不了解某些内容,或者Hangfire存在错误。无论如何,我很乐意解决。
谢谢
所以我正在使用Hangfire计划作业,这些作业向用户发送提醒。每当我将Job设置为每个星期一运行时,例如14h00。如果我早上这样做,请在09h00说。第一次执行,...
也许存在时区问题,并且您的hour:minute
对已经过去了。我刚刚创建了一个手动参数为Cron.Weekly()
的周期性工作,并且在仪表板上显示该工作将在两个小时内完成(如预期)。