У меня есть класс блокирующей очереди на основе Блокировка очереди
Теперь у меня есть ситуации, когда я хочу удалить из очереди только определенный объект, я знаю, что это не действительно случай использования очереди, но в некоторых случаях я думаю, что это хорошее расширение, например, для ожидания определенного сетевого ответа.
Это будет нечто вроде
TryDequeueWhere(Func<T, bool> expression, out T value, int? waitTimeInMs = null)
Проблема заключается в том, что я не знаю, как подождать и заблокировать определенный объект.