我已经阅读了一些其他类似但不相同的链接,试图找到一些答案: 如何批量使用 BlockingCollection<T>
但是,(在上面的链接中)不使用 GetConsumingEnumerable 似乎很可疑。
当消费者(应该是单数)清空集合时,有效阻止生产者的正确方法是什么?
[我们想要进行批处理,因为每个批处理都会执行一个 Web 服务调用,如果每条消息/项目都需要自己的调用,这将是一个瓶颈。批处理消息/项目是解决此瓶颈的方法。]
理想情况下:
1) 接收消息
2) 新的生产者任务推入收集
3)当集合“满”(任意限制)时,阻塞所有生产者,新的消费者任务消耗所有集合,然后为生产者解除阻塞。
换句话说; 我希望(并行生产者)xor(单一消费者)随时对集合起作用。
似乎以前应该这样做过,但我似乎找不到专门以这种方式运行的代码片段。
谢谢你的帮助。