我使用的是生产者-消费者模式,我使用的是 BlockingCollection
来生成数据并使用其中的数据。我调用一个方法来生成数据,然后将 BlockingCollection
设置为 CompleteAdding
,以便使用者使用 BlockingCollection
中的所有数据。经过一些处理后,应用程序想要将一些其他数据添加到 BlockingCollection
,但它不能,因为它被设置为 CompleteAdding
,我该如何设置 CompleteAdding
为 false,或者我如何使用 BlockingCollection
中的所有数据,而不是等待 ComleteAdding
?
最佳答案
你不能 - 调用 CompleteAdding
的全部意义在于,“永远不会有任何更多的数据添加到这个集合中。一旦它为空,你就知道你已经完成了。”您的要求有点像在说“关闭网络连接后,如何重新打开它以便写入更多数据?”
您想要的事实表明您应该重新考虑您的设计。也许此时您应该创建一个新的 BlockingCollection
?或者您可能真的不想调用 CompleteAdding
来开始?
关于c# - 在调用 CompleteAdding 后添加到 BlockingCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12195293/