gpt4 book ai didi

c# - Parallel.For 循环相同的项目

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:15 25 4
gpt4 key购买 nike

我有这个 Parallel.For 代码:

foreach (string g in allGames)
{
eventsList.Add(game);
}

eventsList.Distinct();

Parallel.For(0, eventsList.Count, i =>
{
Console.WriteLine(eventsList[i]);
});

allGames 数组包含以下字符串:

String A: Lee, Stephen - Cope, Jamie
String B: Carter, Ali - Stevens, M
String C: Dott, G - McManus, Alan
String D: Bingham, S - Liu Song
String E: Davis, Mark - Joyce, Mark
String F: Walden, R - Liu Chuang

我的结果是这样的:

Game: Lee, Stephen - Cope, Jamie
Game: Lee, Stephen - Cope, Jamie
Game: Lee, Stephen - Cope, Jamie
Game: Lee, Stephen - Cope, Jamie
Game: Carter, Ali - Stevens, M
Game: Dott, G - McManus, Alan
Game: Bingham, S - Liu Song
Game: Davis, Mark - Joyce, Mark
Game: Walden, R - Liu Chuang

它似乎进行了 4 次相同的迭代(它在代码中发生了很多次)。

我确认 eventsList 列表不包含任何重复项,这是 100% 确认的。

有什么线索可以解决这个问题,让它在每个元素上只工作一次吗?

谢谢!

最佳答案

这可能是问题所在 - 或者至少是您代码中的错误:

eventsList.Distinct();

这不会执行任何操作 - 与所有其他 LINQ 运算符一样,它返回一个新序列,而不是修改现有序列。尝试:

eventsList = eventsList.Distinct().ToList();

我知道您您 100% 确定该列表不包含任何重复项 - 但在那种情况下您不需要 distinct 调用,对吗?无论哪种方式,它都是无用的代码行。

您提供的Parallel.For 代码很好,尽管使用Parallel.ForEach 会更整洁。 :

Parallel.ForEach(eventsList, Console.WriteLine);

如果仍然失败,请发布一个简短但完整的程序来演示问题。

关于c# - Parallel.For 循环相同的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9005737/

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