gpt4 book ai didi

c# - 我们可以使用 Parallel.ForEach() 向列表中添加新元素吗?

转载 作者:太空狗 更新时间:2023-10-30 00:01:49 24 4
gpt4 key购买 nike

我的代码做的事情非常简单

列表已经有元素了。我在列表中有大约 25000 个元素(我希望有更多),每个元素都很小 (DateTime)。

List<DateTime> newList = new List<DateTime>();
Parallel.ForEach(list, l => newlist.Add(new DateTime(l.Ticks + 5000)));

也就是说,基于每个元素,我正在创建新元素并将它们添加到不同的列表中。但是,这似乎不是一个好的编程方法。我遇到此异常一些 次,但不是每次。

IndexOutOfRangeException : {"Index was outside the bounds of the array."}

我们可以使用 Parallel.ForEach() 向列表添加元素吗?如果是,为什么我会遇到错误?如果不是,为什么?

最佳答案

在这种情况下你真正想要的是这样的:

newlist = list.AsParallel().Select(l => new DateTime(l.Ticks + 5000)).ToList();

尽管您应该测量性能以查看这种情况是否甚至受益于并行化。

关于c# - 我们可以使用 Parallel.ForEach() 向列表中添加新元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com