我在使用 Parallel.For 方法时遇到问题。我正在打一个 GET 电话以取回一份清单。然后我想把那个列表添加到主列表中。我已经尝试过 addRange ,它不是线程安全的,并且会在列表中返回错误的数据。我也尝试使用 ConcurrentBag 也没有得到正确的数据。当我说没有得到正确的数据时,我的意思是列表中的一些数据要么重复,要么被覆盖。
这是我的代码(更新):
var thisLock = new Object();
var list = new List<Person>();
Parallel.For(1, 10, x =>
{
request.Page = x;
response = Get(request); // call to client
lock(thisLock)
{
list.AddRange(response);
}
}
除了 addRange 或 ConcurrentBag 之外的任何其他想法