using System.Collections.Generic;
using System.Collections.Concurrent;
using System.Threading.Tasks;
static Queue<string> queue = new Queue<string>();
public static void TaskwithQueueProducerConsumer()
Task.Factory.StartNew(() =>
for (int i = 0; i < 20; i++)
Task.Factory.StartNew(() =>
for (int j = 0; j < queue.Count; j++)
string value = queue.Dequeue();
Console.WriteLine("Worker 1: " + value);
Task.Factory.StartNew(() =>
for (int k = 0; k < queue.Count; k++)
string value = queue.Dequeue();
Console.WriteLine("Worker 2: " + value);
public static void Main()
TaskwithQueueProducerConsumer();