Как использовать BlockingCollection <T> в пакетном режиме
Мы придумали некоторый код, чтобы потреблять все элементы ожидания из очереди. Вместо того, чтобы обрабатывать элементы 1 на 1, имеет смысл обрабатывать все ожидающие элементы как набор.
мы объявили мою очередь такой.
private BlockingCollection items =
new BlockingCollection(new ConcurrentQueue);
Затем, на потребительской ветке, я планирую читать такие партии, как эта,
Item nextItem;
while (this.items.TryTake(out nextItem, -1))
{
var workToDo = new List();
workToDo.Add(nextItem);
while(this.items.TryTake(out nextItem))
{
workToDo.Add(nextItem);
}
// process workToDo, then go back to the queue.
}
Этот подход лишен полезностиGetConsumingEnumerable
и я могу'не интересно, если яМы пропустили лучший способ, или если мой подход неверен.
Есть ли лучший способ потреблятьBlockingCollection
партиями?