public static void RunTask(TaskTemplate taskTemplate) { if (!tasksCollection.ContainsKey(taskTemplate.TaskId)) { log.Info("Inside RunTask...."); var tuple = CustomTaskFactory.BuildTask(taskTemplate.TaskType, taskTemplate); tasksCollection.TryAdd(taskTemplate.TaskId, tuple); tuple.Item2.Start(); TaskScheduler.DAO.TaskSchedulerDAO.UpdateLastStartDate(new TaskRunTimeModel() { TaskId = taskTemplate.TaskId, LastStartDate = DateTime.Now }); } }
private static async Task ParallelQueue <T>(List <T> combinations) { Queue pending = new Queue(combinations); List <Task> working = new List <Task>(); while (pending.Count + working.Count != 0) { if (working.Count < 20 && pending.Count != 0) { var item = pending.Dequeue(); working.Add(CustomTaskFactory.GetNewTask((T)item)); } else { await Task.WhenAny(working); working.RemoveAll(x => x.IsCompleted); } } }