たとえば、単一のバッキング ストアで複数の 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 を呼び出すために必要な簿記を行うことは、それほど簡単ではなくなり、エラーが発生しやすくなります。 . ただし、 を伝播するBlockingCollection
代わりにバッキング ストアを伝播できれば、ブロックBlockingCollection
内でローカルをローカルにインスタンス化できます。using
私の推測では、IProducerConsumerCollection インターフェイスには何もないため、BlockingCollection が依存する唯一のものであり、そうでないことを暗示しているようです。