using System.Collections.Concurrent;
using System.Threading.Tasks;
public static void Main()
BlobBlockItemQueue blobItemQueue = new();
var task1 = AddToQueue(blobItemQueue);
var task2 = WriteToStream(blobItemQueue);
Task.WaitAll(new Task[] { task1, task2 });
public async static Task AddToQueue(BlobBlockItemQueue blobItemQueue)
for(int i = 0; i < 100; i++)
Console.WriteLine($"Count before Add: {blobItemQueue.Count}");
blobItemQueue.Enqueue($"Item{i}");
blobItemQueue.AllBlocksAdded = true;
await Task.FromResult<object>(null);
public async static Task WriteToStream(BlobBlockItemQueue blobItemQueue)
while(blobItemQueue.Count > 0 || !blobItemQueue.AllBlocksAdded)
if (blobItemQueue.TryDequeue(out str1))
Console.WriteLine($"Count after Add: {blobItemQueue.Count}");
await Task.FromResult<object>(null);
public class BlobBlockItemQueue : ConcurrentQueue<string>
public bool AllBlocksAdded { get; set; }