c# - 在调用 CompleteAdding 后添加到 BlockingCollection

标签 c# .net-4.0

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

最佳答案

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

想要的事实表明您应该重新考虑您的设计。也许此时您应该创建一个新的 BlockingCollection?或者您可能真的不想调用 CompleteAdding 来开始?

关于c# - 在调用 CompleteAdding 后添加到 BlockingCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12195293/

相关文章:

.net - 用于 v4.0 clr 的 SSCLI(转子)?

c# - 如何合并两个 JObject?

c# - Xamarin Admob RewardedVideoAd 代码错误 0 和 3

c# - HTTP 错误 401.0 - 未经授权

security - 代码契约(Contract)是否应该用于安全性?

c# - Twitter Bootstrap 和 ASP.NET GridView

c# - IdentityServer4 ValidIssuers

c# - 将同步方法更改为异步

c# - 抵御 System.Collections.Concurrent.ConcurrentDictionary 中的竞争条件

c# - += 反射器中的运算符?