0

当我将并行线程的数量限制为 6 或以下时,它工作正常。任何高于 6 的内容都表示无法读取指定位置的对象。是否有一定次数可以一次初始化同一个对象,或者我该如何修复它给出的错误?如果 MaxDegreeOfParallelism <=6,则所有代码都可以正常工作

Parallel.For(4, erCnt/2 ,opt, a =>
{
    if (a % 2 == 0)
    {
        dynamic[] name = new dynamic[2], num = new dynamic[2], wage = new dynamic[2], dept = new dynamic[2];//, name1 = new dynamic[2], num1 = new dynamic[2], wage1 = new dynamic[2], dept1 = new dynamic[2];
        num[0] = (string)(empSheet.Cells[a, 1] as Excel.Range).Value2;
        name[0] = (string)(empSheet.Cells[a, 2] as Excel.Range).Value2 + "," + (string)(empSheet.Cells[a, 3] as Excel.Range).Value2;
        dept[0] = ((empSheet.Cells[a, 4] as Excel.Range).Value2);
        wage[0] = (empSheet.Cells[a, 5] as Excel.Range).Value2;
        num[1] = (string)(empSheet.Cells[a + 1, 1] as Excel.Range).Value2;
        name[1] = (string)(empSheet.Cells[a + 1, 2] as Excel.Range).Value2 + "," + (string)(empSheet.Cells[a + 1, 3] as Excel.Range).Value2;
        dept[1] = ((empSheet.Cells[a + 1, 4] as Excel.Range).Value2);
        wage[1] = (empSheet.Cells[a + 1, 5] as Excel.Range).Value2;
        employee.Add(name[0], dept[0]);
        employee.Add(name[0], wage[0]);
        employee.Add(name[0], num[0]);
        employee.Add(name[1], wage[1]);
        employee.Add(name[1], dept[1]);
        employee.Add(name[1], num[1]);
    }
});
4

0 回答 0