- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我使用的是生产者-消费者模式,我使用的是 BlockingCollection
来生成数据并使用其中的数据。我调用一个方法来生成数据,然后将 BlockingCollection
设置为 CompleteAdding
,以便使用者使用 BlockingCollection
中的所有数据。经过一些处理后,应用程序想要将一些其他数据添加到 BlockingCollection
,但它不能,因为它被设置为 CompleteAdding
,我该如何设置 CompleteAdding
为 false,或者我如何使用 BlockingCollection
中的所有数据,而不是等待 ComleteAdding
?
最佳答案
你不能 - 调用 CompleteAdding
的全部意义在于,“永远不会有任何更多的数据添加到这个集合中。一旦它为空,你就知道你已经完成了。”您的要求有点像在说“关闭网络连接后,如何重新打开它以便写入更多数据?”
您想要的事实表明您应该重新考虑您的设计。也许此时您应该创建一个新的 BlockingCollection
?或者您可能真的不想调用 CompleteAdding
来开始?
关于c# - 在调用 CompleteAdding 后添加到 BlockingCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12195293/
我使用的是生产者-消费者模式,我使用的是 BlockingCollection 来生成数据并使用其中的数据。我调用一个方法来生成数据,然后将 BlockingCollection 设置为 Comple
在消费者已经被 take() 阻塞的情况下,生产者的 completeAdding 会唤醒它吗?使用 BlockingCollection。 MSDN上没有说清楚。 最佳答案 没有。 快速实验表明它将
我是一名优秀的程序员,十分优秀!