首页 > 解决方案 > Hangfire BackgroundJob.Enqueue 运行多次而不是只运行一次

问题描述

public class NotificationBeforeExpiryDateService : BackgroundService
    {
        private readonly ILogger<NotificationBeforeExpiryDateService> _logger;
        private readonly BackgroundServicesConfiguration _configuration;
        private readonly NotificationBeforeExpiryDateHandler _NotificationBeforeExpiryDate;
        public NotificationBeforeExpiryDateService(ILogger<NotificationBeforeExpiryDateService> logger,
            IOptions<BackgroundServicesConfiguration> options,
            lNotificationBeforeExpiryDateHandler NotificationBeforeExpiryDate)
        {
            _logger = logger;
            _configuration = options?.Value ?? throw new ArgumentNullException();
            _NotificationBeforeExpiryDate = NotificationBeforeExpiryDate;
        }

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
           
            _logger.LogInformation($"Start adding ({nameof(NotificationBeforeExpiryDateService)}) Job-2...");

            var recurringTimeIntervalEmail = _configuration
              .Services
              .FirstOrDefault(s => s.Name == BackgroundServiceCofigKey.NotificationBeforeExpiry)
              .RecurringTimeIntervalEmail;

            BackgroundJob.Enqueue(() => _NotificationBeforeExpiryDate.Execute());//, recurringTimeIntervalEmail, TimeZoneInfo.Local);

            _logger.LogInformation($"End adding Recurring Job-2...");

            await Task.CompletedTask;
        }
    }
}

我正在使用这些代码行在我的 Execute 方法中发送电子邮件通知,在该方法中我向用户发送电子邮件,但每次我无法停止任何解决方案时,BackgroundJob.Enqueue都在没有任何限制的情况下运行。

标签: hangfirehangfire-unity

解决方案


推荐阅读