accepted answer to question "Why does this Parallel.ForEach code freeze the program up?"建议在WPF应用程序中将列表用法替换为ConcurrentBag。
我想了解在这种情况下是否可以使用BlockingCollection?
最佳答案
您确实可以使用BlockingCollection
,但是这样做绝对没有意义。
首先,请注意 BlockingCollection
是实现 IProducerConsumerCollection<T>
的集合的包装。任何实现该接口(interface)的类型都可以用作基础存储:
这包括ConcurrentBag<T>
,这意味着您可以拥有一个阻塞的并发包。那么,简单的IProducerConsumerCollection<T>
和阻止的集合之间有什么区别? BlockingCollection
的文档说(重点是我):
由于在链接的问题中不需要执行任何一项操作,因此使用BlockingCollection
只是增加了一层未使用的功能。
关于c# - 什么时候使用BlockingCollection,什么时候用ConcurrentBag代替List <T>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15400133/