有没有办法一次将多个项目添加到 ConcurrentBag,而不是一次一个?我在 ConcurrentBag 上没有看到 AddRange() 方法,但有一个 Concat()。但是,这对我不起作用:
ConcurrentBag<T> objectList = new ConcurrentBag<T>();
timeChunks.ForEach(timeChunk =>
{
List<T> newList = Foo.SomeMethod<T>(x => x.SomeReadTime > timeChunk.StartTime);
objectList.Concat<T>(newList);
});
此代码曾经位于 Parallel.ForEach() 中,但我将其更改为上述代码,以便对其进行故障排除。变量 newList 确实有对象,但是在 objectList.Concat<> 行之后,objectList 中总是有 0 个对象。Concat<> 不是这样工作的吗?我是否需要使用 Add() 方法一次向 ConcurrentBag 添加一个项目?