public async Task <TaskInfo> GetTaskInfo(int id) { TaskInfo res; if (_taskInfos.TryGetValue(id, out res)) { return(res); } using (var scope = this.Services.CreateScope()) { var provider = scope.ServiceProvider; using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Suppress, TimeSpan.FromSeconds(30), TransactionScopeAsyncFlowOption.Enabled)) { var database = provider.GetRequiredService <SSSBDbContext>(); OnDemandTask task = await database.OnDemandTask.Include((d) => d.Executor).SingleOrDefaultAsync(t => t.OnDemandTaskId == id); if (task == null) { throw new Exception(string.Format("OnDemandTask with taskID={0} was not found", id)); } res = TaskInfo.FromOnDemandTask(task); } } _taskInfos.TryAdd(id, res); return(res); }
public static TaskInfo FromOnDemandTask(OnDemandTask task) { TaskInfo info = new TaskInfo(); Executor executor = task.Executor; info.ExecutorTypeName = executor.FullTypeName; info.OnDemandTaskID = task.OnDemandTaskId; info.Name = task.Name; info.ExecutorID = task.ExecutorId; info.SheduleID = task.SheduleId; info.SettingID = task.SettingId; return(info); }