class Program
{
static BlockingCollection<string> cakeOrders = new BlockingCollection<string>(boundedCapacity: 5);
static void Baker()
{
foreach (var order in cakeOrders.GetConsumingEnumerable())
{
Console.WriteLine($"Baker is baking {order}...");
Thread.Sleep(2000);
Console.WriteLine($"Baker has finished baking {order}");
}
}
static void Main()
{
Task.Run(Baker);
for (int i = 1; i <= 10; i++)
{
string order = $"Cake {i}";
cakeOrders.Add(order);
Console.WriteLine($"Order received: {order}");
Thread.Sleep(1000);
}
cakeOrders.CompleteAdding();
Console.ReadLine();
}
}