Exemple #1
0
        /// <summary>
        /// Enqueues the <paramref name="value"/>.
        /// </summary>
        /// <param name="value">The value to enqueue.</param>
        public void Enqueue(T value)
        {
            _queue.Enqueue(value);
            ValueEnqueued?.Invoke(value);

            DequeueExcessValues();
        }
Exemple #2
0
 /// <summary>
 /// Tries to enqueue new value and returns success status. Locks the queue after adding a new element if the queue reaches its maximum size.
 /// </summary>
 /// <param name="value">Value to enqueue.</param>
 /// <returns>True if value was successfully enqueue or false otherwise.</returns>
 public bool TryEnqueue(T value)
 {
     lock (_lockGuard)
     {
         if (!_queueLocked)
         {
             _queue.Enqueue(value);
             ValueEnqueued?.Invoke();
             if (_queue.Count >= _size)
             {
                 _queueLocked = true;
             }
             return(true);
         }
         return(false);
     }
 }