KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Please see below pseudo code //Single or multiple Producers produce using below method void Produce(object itemToQueue) { concurrentQueue.enqueue(itemToQueue); consumerSignal.set; } //somewhere else we have started a consumer like this //we have only one consumer void StartConsumer() { while (!concurrentQueue.IsEmpty()) { if (concurrentQueue.TrydeQueue(out item)) { //long running processing of item } } consumerSignal.WaitOne(); } How do I port this pattern I have used since time immemorial to use taskfactory created tasks and the new signalling features of net 4. In other words if someone were to write this pattern using net 4 how would it look like ? Pseudo code is fine. Iam already using .net 4 concurrentQueue as you can see. How do I use a task and possibly use some newer signalling mechanism if possible. thanks Solution to my problem below thanks to Jon/Dan. Sweet. No manual signalling or while(true) or while(itemstoProcess) type loops like the old days //Single or multiple Producers produce using below method void Produce(object itemToQueue) { blockingCollection.add(item); } //somewhere else we have started a consumer like this //this supports multiple consumers ! task(StartConsuming()).Start; void StartConsuming() { foreach (object item in blockingCollection.GetConsumingEnumerable()) { //long running processing of item } } cancellations are handled using cancel tokens
Tags (comma-separated)
Save Edits
Cancel