当使用有界容量的BlockingCollection时,该集合中的项将被阻塞,直到有容量可用。因此,在高负载情况下,如果较大数量的项被阻塞,会导致性能下降。
为了解决这个问题,我们可以使用无界容量的BlockingCollection,或者使用带有延迟重试的添加方法。下面是示例代码:
使用无界容量的BlockingCollection:
BlockingCollection
使用带有延迟重试的添加方法:
public static bool TryAddWithTimeout
使用:
bc.TryAddWithTimeout(item, 1000); //尝试添加,最多等待1000ms
这些方法都可以防止高负载情况下的性能下降。