Example #1
0
        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();
        }
Example #2
0
        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;
        }