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(); } }
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; }