static void Multiple() { var rnd = new Random(); Task.Run(() => { for (int i = 1; i <= 10; i++) { ObservableConcurrentQueue.Enqueue(i + rnd.Next(0, 2000)); Thread.Sleep(rnd.Next(0, 2000)); } }); Task.Run(() => { for (int i = 1; i <= 10; i++) { ObservableConcurrentQueue.Enqueue(i + rnd.Next(0, 2000)); Thread.Sleep(rnd.Next(0, 2000)); } }); Task.Run(() => { for (int i = 1; i <= 10; i++) { ObservableConcurrentQueue.Enqueue(i + rnd.Next(0, 2000)); Thread.Sleep(rnd.Next(0, 2000)); } }); }
/// <summary> /// Enqueues the event test. /// </summary> private void EnqueueEventTest() { const int item = 11; _queue.Enqueue(item); Assert.AreEqual(item, _queueAddedItem); Assert.IsFalse(_isQueueEmpty); _queue.Enqueue(item + 1); Assert.AreEqual(item + 1, _queueAddedItem); Assert.IsFalse(_isQueueEmpty); }
void SampleData(object state) { if (q.Count > 200) { return; } q.Enqueue($"Hello World {QCount++}"); // Debug.WriteLine($"Queued {QCount}"); }
private async void ReceiveC2dAsync(DeviceClient deviceClient) { while (true) { try { Message receivedMessage = await deviceClient.ReceiveAsync(); if (receivedMessage == null) { await Task.Delay(2000); continue; } await deviceClient.CompleteAsync(receivedMessage); string command = Encoding.ASCII.GetString(receivedMessage.GetBytes()).ToUpper(); q.Enqueue(command); if (telemetry.SetSampleRateInSeconds(command)) { continue; } switch (command[0]) { case 'R': statusColour = Colors.Red; break; case 'G': statusColour = Colors.Green; break; case 'B': statusColour = Colors.Blue; break; case 'Y': statusColour = Colors.Yellow; break; default: statusColour = Colors.Purple; break; } display.Fill(statusColour); display.Update(); } catch { telemetry.Exceptions++; } } }
/// <summary> /// The main. /// </summary> /// <param name="args"> /// The args. /// </param> private static void Main(string[] args) { var observableConcurrentQueue = new ObservableConcurrentQueue <int>(); observableConcurrentQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; var task = new Task( () => { Console.WriteLine("Enqueue elements..."); for (int i = 1; i <= 20; i++) { observableConcurrentQueue.Enqueue(i); Thread.Sleep(100); } int item; Console.WriteLine("Peek & Dequeue 5 elements..."); for (int i = 0; i < 5; i++) { observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); observableConcurrentQueue.TryDequeue(out item); Thread.Sleep(300); } observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); Console.WriteLine("Dequeue all elements..."); while (observableConcurrentQueue.TryDequeue(out item)) { Thread.Sleep(300); } }); task.Start(); Console.WriteLine("End. Press any key to exit..."); Console.ReadKey(true); }
private static async Task TryItWithThreadSafeAsync() { var observableConcurrentQueue = new ObservableConcurrentQueue <int>(); observableConcurrentQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; await Task.Run(() => { Console.WriteLine("Enqueue elements..."); Parallel.For(1, 20, i => { observableConcurrentQueue.Enqueue(i); }); int item; Console.WriteLine("Peek & Dequeue 5 elements..."); Parallel.For(0, 5, i => { observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); observableConcurrentQueue.TryDequeue(out item); }); Thread.Sleep(300); observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); Console.WriteLine("Dequeue all elements..."); Parallel.For(1, 20, i => { while (observableConcurrentQueue.TryDequeue(out item)) { // NO SLEEP, Force Concurrence // Thread.Sleep(300); } }); } ); }
/// <summary> /// The main. /// </summary> /// <param name="args"> /// The args. /// </param> private static void Main(string[] args) { var observableConcurrentQueue = new ObservableConcurrentQueue<int>(); observableConcurrentQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; var task = new Task( () => { Console.WriteLine("Enqueue elements..."); for (int i = 1; i <= 20; i++) { observableConcurrentQueue.Enqueue(i); Thread.Sleep(100); } int item; Console.WriteLine("Peek & Dequeue 5 elements..."); for (int i = 0; i < 5; i++) { observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); observableConcurrentQueue.TryDequeue(out item); Thread.Sleep(300); } observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); Console.WriteLine("Dequeue all elements..."); while (observableConcurrentQueue.TryDequeue(out item)) { Thread.Sleep(300); } }); task.Start(); Console.WriteLine("End. Press any key to exit..."); Console.ReadKey(true); }
private static void TryItWithoutThreadSafe() { var observableConcurrentQueue = new ObservableConcurrentQueue <int>(); observableConcurrentQueue.ContentChanged += OnObservableConcurrentQueueContentChanged; var task = new Task( () => { Console.WriteLine("Enqueue elements..."); for (int i = 1; i <= 20; i++) { observableConcurrentQueue.Enqueue(i); Thread.Sleep(100); } int item; Console.WriteLine("Peek & Dequeue 5 elements..."); for (int i = 0; i < 5; i++) { observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); observableConcurrentQueue.TryDequeue(out item); Thread.Sleep(300); } observableConcurrentQueue.TryPeek(out item); Thread.Sleep(300); Console.WriteLine("Dequeue all elements..."); while (observableConcurrentQueue.TryDequeue(out item)) { Thread.Sleep(300); } }); task.Start(); }
private async void ReceiveC2dAsync(DeviceClient deviceClient) { while (true) { try { Message receivedMessage = await deviceClient.ReceiveAsync(); if (receivedMessage == null) { await Task.Delay(2000); continue; } await deviceClient.CompleteAsync(receivedMessage); string command = Encoding.ASCII.GetString(receivedMessage.GetBytes()); q.Enqueue(command); } catch { telemetry.Exceptions++; } } }
public void Download(Uri url) { Interlocked.Increment(ref totalLinks); downloadLinks.Enqueue(url); }