Blocking collection的默认大小

Blocking collection的默认大小

问题描述:

我想知道Blocking Collection的默认大小。不知何故,我的程序无法添加阻塞收集的元素。Blocking collection的默认大小

+0

默认的有界容量是-1,意思是“没有默认容量”,除了是“BlockingCollection ”之外,它根本不应该被阻塞。 –

+0

好的,我的问题是,我无法添加元素阻塞收集,所以我想收集必须充分。因此,这个问题... – OmiH

+0

这意味着它不使用默认大小。所以你的问题是两个问题:1)什么是默认大小和2)为什么我的程序不能将元素添加到集合中。 1)的答案是“没有限制”,对2)的答案是“收集已满,因此它被构造了一个特定的限制”。检查'.BoundedCapacity'属性以了解哪些限制被放置在集合上。 –

As read here,默认构造函数构建一个没有上限的阻塞集合。所以你的问题在别的地方。

缺省大小在此代码:

var collection = new BlockingCollection<int>(); 

是,它没有上限,根据documentation

初始化BlockingCollection类的新实例,而不一大写绑定

(我的重点)

您还可以了解通过.BoundedCapacity属性在这种情况下将返回-1这个上限。

Try an example on .NET Fiddle

显然一个*的阻塞集合仍然在元素的数量是有限的,你可以添加到它最终要么底层阵列中或周围的内存已满,但它不是强加的人为限制由班级本身决定。

如果你注意到你不能将元素添加到这样的集合中,它将会如此阻塞,那么显然它不是以这种方式构建的。

取而代之的是它被构建为,其中有一个特定的限制,您仍然可以使用上面显示的.BoundedCapacity属性来了解此限制。