示例#1
0
        private static async Task WriteToConsoleFromQ()
        {
            //StringHelper.WriteListToConsole(async () =>
            //{
            // return await MsgQ.GetFromQueue<int>(25);
            //});

            var dQ = new List <int>(); string val;

            do
            {
                dQ.Clear(); val = "";
                dQ = await MsgQ.GetFromQueue <int>(25);

                if (dQ.Count <= 0)
                {
                    break;
                }

                dQ.ForEach(x => val += $"{x}, ");
                Console.WriteLine(val.Trim().Trim(','));
            } while (dQ.Count > 0);

            if (!string.IsNullOrEmpty(val))
            {
                Console.WriteLine(val.Trim().Trim(','));
                Console.WriteLine();
            }
        }
示例#2
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();
        }
示例#3
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;
        }