我想在 C# 中使用并行 For 循环来运行函数并将结果写入变量。
这是我正在使用的当前 for 循环:
string[][,] PatternTables;
for (i = 0; i < BOMs.Length; i++)
{
PatternTables[i] = BOMAnalysis(Pattern, PatternMatch, BOMs, HeaderIndex);
}
此外,如果有办法做到这一点,那么treads
在写入变量之前暂停直到前一个线程完成也会很好地保持事情有序但没有必要。
是的,我现在多次运行同一件事,因为我之前没有做过并行循环,我想在添加变化之前确保一致性。如何将此 for 循环重写为并行 for 循环,以便获得一致的结果?
这是我似乎得到大部分错误的陈述:
if (scrMatch)
{
Array.Resize(ref PatternMatch[k][0], PatternMatch[k][0].Length + 1);
Array.Resize(ref PatternMatch[k][1], PatternMatch[k][1].Length + 1);
Array.Resize(ref PatternMatch[k][2], PatternMatch[k][2].Length + 1);
Array.Resize(ref PatternMatch[k][3], PatternMatch[k][3].Length + 1);
Array.Resize(ref PatternMatch[k][4], PatternMatch[k][4].Length + 1);
Array.Resize(ref PatternMatch[k][5], PatternMatch[k][5].Length + 1);
Array.Resize(ref PatternMatch[k][6], PatternMatch[k][6].Length + 1);
int Row = j + 1;
PatternMatch[k][0][PatternMatch[k][0].Length - 1] = Row.ToString();
PatternMatch[k][1][PatternMatch[k][1].Length - 1] = BOMs[i][j, HeaderIndex[4, i]];
PatternMatch[k][2][PatternMatch[k][2].Length - 1] = BOMs[i][j, HeaderIndex[2, i]];
PatternMatch[k][3][PatternMatch[k][3].Length - 1] = BOMs[i][j, HeaderIndex[6, i]];
PatternMatch[k][4][PatternMatch[k][4].Length - 1] = BOMs[i][j, HeaderIndex[3, i]];
PatternMatch[k][5][PatternMatch[k][5].Length - 1] = BOMs[i][j, HeaderIndex[0, i]];
PatternMatch[k][6][PatternMatch[k][6].Length - 1] = BOMs[i][j, HeaderIndex[1, i]];
}