Hanfire跳过第一份工作执行

问题描述 投票:-1回答:1

所以我正在使用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说。第一次执行,...

c# asp.net-core cron scheduled-tasks hangfire
1个回答
1
投票

也许存在时区问题,并且您的hour:minute对已经过去了。我刚刚创建了一个手动参数为Cron.Weekly()的周期性工作,并且在仪表板上显示该工作将在两个小时内完成(如预期)。

© www.soinside.com 2019 - 2024. All rights reserved.