static void Main() { var stack = new ConcurrentStack <int>(); stack.Push(1); stack.Push(2); stack.Push(3); stack.Push(4); int result; if (stack.TryPeek(out result)) { Console.WriteLine($"{result} is on top"); } if (stack.TryPop(out result)) { Console.WriteLine($"Popped {result}"); } var items = new int[5]; if (stack.TryPopRange(items, 0, 5) > 0) // actually pops only 3 items { var text = string.Join(", ", items.Select(i => i.ToString())); Console.WriteLine($"Popped these items: {text}"); } }
static void ConcurrentStackDemo() { var names = new ConcurrentStack <string>(); names.Push("Bob"); names.Push("Alice"); names.Push("Rob"); Console.WriteLine($"After enqueuing, count = {names.Count}"); string item1; //= names.Dequeue(); bool success = names.TryPop(out item1); if (success) { Console.WriteLine("\nRemoving " + item1); } else { Console.WriteLine("queue was empty"); } string item2; //=names.Peek(); success = names.TryPeek(out item2); if (success) { Console.WriteLine("Peeking " + item2); } else { Console.WriteLine("queue was empty"); } Console.WriteLine("Enumerating"); PrintOutCollection(names); Console.WriteLine("\nAfter enumerating, count = " + names.Count); }