KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've come up with some code to consume all wating items from a queue. Rather than processing the items 1 by 1, it makes sense to process all waiting items as a set. I've declared my queue like this. private BlockingCollection<Item> items = new BlockingCollection<Item>(new ConcurrentQueue<Item>); Then, on a consumer thread, I plan to read the items in batches like this, Item nextItem; while (this.items.TryTake(out nextItem, -1)) { var workToDo = new List<Item>(); workToDo.Add(nextItem); while(this.items.TryTake(out nextItem)) { workToDo.Add(nextItem); } // process workToDo, then go back to the queue. } This approach lacks the utility of GetConsumingEnumerable and I can't help wondering if I've missed a better way, or if my approach is flawed. Is there a better way to consume a BlockingCollection<T> in batches?
Tags (comma-separated)
Save Edits
Cancel