public override string ToString() { return (DescendingPriorities .Select(PriorityStatusToString) .Aggregate($"{nameof(PriorityQueueUC<TPrioritySelectorEnum, TItem>)}", (c, n) => c + "\r\n" + n) ); }
/// <summary> /// <para/> Concurrent non-blocking priority queue with optional priority based dequeue. /// <para/> Do not use <see cref="System.Enum.GetValues(System.Type)"/> to build <see cref="descendingPriorities"/> /// as C# specification does not ensure order of values as defined in your enum unless you explicitly /// assign value to each enum name and order by value! /// <para/> Flagged enums are not supported. /// </summary> public PriorityQueueNotifierUC(IEnumerable <TPrioritySelectorEnum> descendingPriorities) : base(descendingPriorities) { NotifyPriority = DescendingPriorities.ToDictionary(p => p, p => new Queue <TaskCompletionSource <object> >()); }