示例#1
0
 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
         });
     }
 }
示例#2
0
        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);
                }
            }
        }