调用CompleteAdding后添加到BlockingCollection

时间:2012-08-30 10:56:20

标签: c# .net-4.0

我正在使用Producer-Consumer模式,我使用BlockingCollection生成数据并从中消耗数据。我调用一种方法来生成数据,然后将BlockingCollection设置为CompleteAdding,以便消费者使用BlockingCollection中的所有数据。经过一些处理后,应用程序想要向BlockingCollection添加一些其他数据,但它不能,因为它设置为CompleteAdding,如何将CompleteAdding设置为false,或者如何才能我使用BlockingCollection中的所有数据,而不是等待ComleteAdding

1 个答案:

答案 0 :(得分:14)

你不能 - 调用CompleteAdding的全部意思是说,“这个集合中不会再添加任何数据。一旦它被清空,你就知道你已经完成了。”您要求的有点像是说:“在我关闭网络连接后,如何重新打开它以便我可以写更多数据?”

想要的事实表明您应该重新考虑您的设计。也许你现在应该创建一个新的BlockingCollection而不是?或者你可能真的想要打电话给CompleteAdding开始?