我想知道是否可以使用单个后备存储实例化多个 BlockingCollections,例如:
ConcurrentStack<object> theStack = new ConcurrentStack<object>();
BlockingCollection<object> blockingStack1 = new BlockingCollection<object>(theStack);
BlockingCollection<object> blockingStack2 = new BlockingCollection<object>(theStack);
本次调查的动机如下;BlockingCollection
需要调用它的 Dispose 方法。这与使用using
块是无缝的。然而,由于一个using
块并不总是合适的(考虑生产者和消费者不仅生活在不同的方法中,而且还生活在不同的线程上)试图做调用 Dispose 所需的簿记变得不那么琐碎,而且更容易出错. 但是,如果不是传播 a BlockingCollection
,而是传播后备存储,则BlockingCollection
可以在using
块内本地实例化一个本地。
我的猜测是您可以,因为 IProducerConsumerCollection 接口中没有任何内容,这是 BlockingCollection 唯一依赖的东西,这似乎暗示了其他情况。