diff --git a/src/Infrastructure/BotSharp.Core.Crontab/Services/CrontabEventSubscription.cs b/src/Infrastructure/BotSharp.Core.Crontab/Services/CrontabEventSubscription.cs index 17b599b6a..160bf4fcf 100644 --- a/src/Infrastructure/BotSharp.Core.Crontab/Services/CrontabEventSubscription.cs +++ b/src/Infrastructure/BotSharp.Core.Crontab/Services/CrontabEventSubscription.cs @@ -40,15 +40,17 @@ await subscriber.SubscribeAsync($"Crontab:{item.Title}", "Crontab", port: 0, priorityEnabled: false, - async (sender, args) => - { - var scope = _services.CreateScope(); - cron = scope.ServiceProvider.GetRequiredService(); - await cron.ScheduledTimeArrived(item); - }, + async (sender, args) => await HandleCrontabEvent(item), stoppingToken: stoppingToken); }); } } } + + private async Task HandleCrontabEvent(CrontabItem item) + { + using var scope = _services.CreateScope(); + var cron = scope.ServiceProvider.GetRequiredService(); + await cron.ScheduledTimeArrived(item); + } } diff --git a/src/Infrastructure/BotSharp.Core.Crontab/Services/CrontabWatcher.cs b/src/Infrastructure/BotSharp.Core.Crontab/Services/CrontabWatcher.cs index 8fff5220a..1546cb7c4 100644 --- a/src/Infrastructure/BotSharp.Core.Crontab/Services/CrontabWatcher.cs +++ b/src/Infrastructure/BotSharp.Core.Crontab/Services/CrontabWatcher.cs @@ -93,9 +93,7 @@ private async Task RunCronChecker(IServiceProvider services) } else { - var scope = _services.CreateScope(); - cron = scope.ServiceProvider.GetRequiredService(); - cron.ScheduledTimeArrived(item); + await HandleCrontabEvent(item); } } } @@ -107,6 +105,13 @@ private async Task RunCronChecker(IServiceProvider services) } } + private async Task HandleCrontabEvent(CrontabItem item) + { + using var scope = _services.CreateScope(); + var cron = scope.ServiceProvider.GetRequiredService(); + await cron.ScheduledTimeArrived(item); + } + private DateTime GetLastOccurrence(CrontabSchedule schedule) { var nextOccurrence = schedule.GetNextOccurrence(DateTime.UtcNow);