using System.Collections.Concurrent;
using System.Threading.Tasks;
using System.Collections.Generic;
private static BlockingCollection<Task<int>> BlockingCollection {get;set;}
public static void RealizarPizza(int numTasks)
for(int i = 0 ; i < numTasks ; i++)
Task<int> task = new Task<int>(()=>
Thread.Sleep(r.Next(1,3));
Console.WriteLine("Pizza: " + closured);
BlockingCollection.Add(task);
BlockingCollection.CompleteAdding();
public static void Main()
BlockingCollection = new BlockingCollection<Task<int>>(maxParallelism);
Task.Factory.StartNew(()=> RealizarPizza(numTasks));
foreach(var task in BlockingCollection.GetConsumingEnumerable())
Console.WriteLine(" ¡¡¡¡Pizza Entregada!!!!: "+ task.Result);