Classes/Public/TMCSessionQueue.ps1
Add-Type -TypeDefinition @"
using System; using System.Collections.Concurrent; public class TMCSessionQueue<T> { public readonly ConcurrentQueue<T> queue = new ConcurrentQueue<T>(); public event EventHandler Enqueued; public TMCSessionQueue() {} protected virtual void OnEnqueued() { Enqueued?.Invoke(this, EventArgs.Empty); } public virtual void Enqueue(T item) { queue.Enqueue(item); OnEnqueued(); } public int Count { get { return queue.Count; } } public virtual Boolean TryDequeue(out T result) { return queue.TryDequeue(out result); } } "@ |