Esempio n. 1
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);
                }
            }
        }