Merge pull request #1013 from yileicn/master

PEOL-187 hotfix System object Disposed Exception: Cannot access a dis…
This commit is contained in:
易磊 2025-04-17 15:34:50 +08:00 committed by GitHub
commit b1f949cf56
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 9 deletions

View file

@ -40,15 +40,17 @@ public class CrontabEventSubscription : BackgroundService
"Crontab",
port: 0,
priorityEnabled: false,
async (sender, args) =>
{
var scope = _services.CreateScope();
cron = scope.ServiceProvider.GetRequiredService<ICrontabService>();
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<ICrontabService>();
await cron.ScheduledTimeArrived(item);
}
}

View file

@ -93,9 +93,7 @@ public class CrontabWatcher : BackgroundService
}
else
{
var scope = _services.CreateScope();
cron = scope.ServiceProvider.GetRequiredService<ICrontabService>();
cron.ScheduledTimeArrived(item);
await HandleCrontabEvent(item);
}
}
}
@ -107,6 +105,13 @@ public class CrontabWatcher : BackgroundService
}
}
private async Task HandleCrontabEvent(CrontabItem item)
{
using var scope = _services.CreateScope();
var cron = scope.ServiceProvider.GetRequiredService<ICrontabService>();
await cron.ScheduledTimeArrived(item);
}
private DateTime GetLastOccurrence(CrontabSchedule schedule)
{
var nextOccurrence = schedule.GetNextOccurrence(DateTime.UtcNow);