private static void DoMonitorQueueExample() { Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"[{DateTime.Now}] Queueing using Monitor"); var itemsToQ = new List <int>(); Console.WriteLine("How many numbers to add to queue? "); var readLine = Console.ReadLine(); var numCount = long.Parse(readLine ?? "0"); //add specified count of random single digit numbers var rnd = new Random(); for (var i = 0; i < numCount; i++) { itemsToQ.Add(rnd.Next(0, 9)); } Console.WriteLine($"\nQueueing {itemsToQ.Count} items"); var startTime = DateTime.Now; var work = new[] { MsgQ.AddToQueue(itemsToQ), //q.AddToQueue(itemsToQ), //q.AddToQueue(itemsToQ), WriteToConsoleFromQ(), WriteToConsoleFromQ(), WriteToConsoleFromQ(), WriteToConsoleFromQ(), WriteToConsoleFromQ() }; //added a bunch to the queue, lets pull it out Task.WaitAll(work); Console.WriteLine($"Execution time took: [{DateTime.Now.Subtract(startTime).TotalSeconds} seconds] to enqueue and dequeue {numCount} items."); Console.WriteLine("--------------------------------------------------------------------------"); Console.WriteLine(); }
private static void DoMonitorQueueListenerExample() { Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"[{DateTime.Now}]------------Queueing using Monitor Listeners----------\n"); MsgQ.OnReport += Console.WriteLine; MsgQ.AddQueueListener(GetVowelsFromString); do { var input = WriteLineWithResponse("Enter text [Q to quit]:\n"); if (input == "Q") { break; } MsgQ.AddToQueue(new List <string> { input }); } while (true); MsgQ.StopQueueListeners();//cleanup MsgQ.OnReport -= Console.WriteLine; }