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/

10-09 09:17