【发布时间】:2012-01-25 15:56:07
【问题描述】:
我有这个 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();这一行没有多大作用。你是说eventsList = eventsList.Distinct();吗? -
在执行
.Distinct()时将返回一个新对象,而不是更改列表。此外,您似乎将game对象添加到列表allGames.Count()次(您的局部变量称为g,而不是game)。