diff --git a/Endpoint/Controllers/V1/Configuration/ScheduleController.cs b/Endpoint/Controllers/V1/Configuration/ScheduleController.cs index 178704b..f965040 100644 --- a/Endpoint/Controllers/V1/Configuration/ScheduleController.cs +++ b/Endpoint/Controllers/V1/Configuration/ScheduleController.cs @@ -2,6 +2,7 @@ using Cronos; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -191,15 +192,27 @@ public class ScheduleController(ILogger logger, IOptionsSnap filePaths.Add((filePath, defaultCampus[i])); } - var sync = (ScheduleSynchronizer)ActivatorUtilities.GetServiceOrCreateInstance(provider, typeof(ScheduleSynchronizer)); - if (force) { - dbContext.Lessons.RemoveRange(dbContext.Lessons.ToList()); + dbContext.Lessons.RemoveRange(await dbContext.Lessons.ToListAsync()); await dbContext.SaveChangesAsync(); } - _ = sync.StartSync(filePaths, CancellationToken.None); + var scopeFactory = provider.GetRequiredService(); + ThreadPool.QueueUserWorkItem(async void (_) => + { + try + { + using var scope = scopeFactory.CreateScope(); + var sync = (ScheduleSynchronizer)ActivatorUtilities.GetServiceOrCreateInstance(scope.ServiceProvider, typeof(ScheduleSynchronizer)); + + await sync.StartSync(filePaths, CancellationToken.None); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + }); return Ok(); }