/// <summary> /// загрузка расписания /// </summary> public async Task ReloadSchedule(int taskID) { using (var scope = _rootServices.CreateScope()) { var provider = scope.ServiceProvider; using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Suppress, TimeSpan.FromSeconds(30), TransactionScopeAsyncFlowOption.Enabled)) { var database = provider.GetRequiredService <SSSBDbContext>(); var task = await database.OnDemandTask.Include(t => t.Shedule).Where(t => t.OnDemandTaskId == taskID).SingleOrDefaultAsync(); if (task == null || !(task.Active == true) || task.Shedule == null) { UnLoadSchedule(taskID); return; } lock (BaseSheduleTimer.Timers) { UnLoadSchedule(taskID); if (task.Shedule.Active == true) { BaseSheduleTimer timer = new ScheduleTimer(this, task.OnDemandTaskId, task.Shedule.Interval); timer.Start(); } } } } }
/// <summary> /// загрузка расписаний /// </summary> public async Task LoadSchedules() { using (var scope = _rootServices.CreateScope()) { var provider = scope.ServiceProvider; using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Suppress, TimeSpan.FromSeconds(30), TransactionScopeAsyncFlowOption.Enabled)) { var database = provider.GetRequiredService <SSSBDbContext>(); // all tasks which have schedules var tasks = await(from task in database.OnDemandTask.Include(t => t.Shedule) where task.Active == true && task.SheduleId != null select task).ToListAsync(); lock (BaseSheduleTimer.Timers) { foreach (var task in tasks) { if (task.Shedule.Active == true) { BaseSheduleTimer timer = new ScheduleTimer(this, task.OnDemandTaskId, task.Shedule.Interval); timer.Start(); } } } } } }