我正在使用Producer-Consumer模式,我使用BlockingCollection
生成数据并从中消耗数据。我调用一种方法来生成数据,然后将BlockingCollection
设置为CompleteAdding
,以便消费者使用BlockingCollection
中的所有数据。经过一些处理后,应用程序想要向BlockingCollection
添加一些其他数据,但它不能,因为它设置为CompleteAdding
,如何将CompleteAdding
设置为false,或者如何才能我使用BlockingCollection
中的所有数据,而不是等待ComleteAdding
?
答案 0 :(得分:14)
你不能 - 调用CompleteAdding
的全部意思是说,“这个集合中不会再添加任何数据。一旦它被清空,你就知道你已经完成了。”您要求的有点像是说:“在我关闭网络连接后,如何重新打开它以便我可以写更多数据?”
您想要的事实表明您应该重新考虑您的设计。也许你现在应该创建一个新的BlockingCollection
而不是?或者你可能真的想要打电话给CompleteAdding
开始?