/// <summary> /// Добавить сообщение в очередь. /// </summary> /// <param name="aMessage">Сообщение.</param> public void InsertMessage(SoundMessage aMessage) { if (aMessage.GetPriority() > maxPriority) { throw new ArgumentOutOfRangeException(string.Format("Priority must be less than {0}.", maxPriority)); } lock (queueLock) { messageList.Add(aMessage); messageList.Sort(Comparer); } }
/// <summary> /// Сортируем так, чтобы сообщения с высоким приоритетом были вначале очереди. /// </summary> /// <param name="aFirst">X.</param> /// <param name="aSecond">Y.</param> /// <returns>Результат сравнения.</returns> private static int Comparer(SoundMessage aFirst, SoundMessage aSecond) { return aFirst.GetPriority() <= aSecond.GetPriority() ? 0 : -1; }