Parallel.For在范围声明中null c#

时间:2018-04-04 15:59:48

标签: c# multithreading parallel-processing nullreferenceexception parallel.for

我是使用Parallel的新手,所以可能我错过了一些东西。使用Parallel.For运行此代码时,我得到一个NullReferenceExcempion。当正常做同样的事情时,它可以很好地工作。 我发现其他人问同样的问题,但在他们的情况下问题始终是他们在范围之外宣布变量当然可以产生各种混乱的东西。我发现没有人遇到这个问题,因为我正在经历这个问题。 在我的情况下,变量在内部声明...我怎样才能获得空引用?

Parallel.For(0, Outer.ThisValidation.RawData.RawDataStorage.Count, i =>
        {
            //This line gets the NullReference. 
            //I'm declaring and assigning the variable in the same line, how on Earth can ThisSer throw a NullReferenceException
            Series ThisSer = chartEquitiesBySymbol.Series.Add(Outer.ThisValidation.RawData.RawDataStorage[i].StringedIndex);

            ThisSer.IsVisibleInLegend = false;

            ThisSer.ChartType = SeriesChartType.Line;
            ThisSer.BorderWidth = 2;

            for (int j = 0; j < Outer.ThisValidation.RawData.RawDataStorage[i].EquityData.EquityLine.Count; j++)
                ThisSer.Points.AddXY(Outer.ThisValidation.RawData.RawDataStorage[i].EquityData.EquityLine[j].Date, Outer.ThisValidation.RawData.RawDataStorage[i].EquityData.EquityLine[j].Value);


            Outer.ThisValidation.RawData.RawDataStorage[i].AddSeries(WindowID, ThisSer);
        });

错误显示在评论中。 我正在为图表添加一个系列,该系列的引用会立即存储在一个对象中,以便以后可以使用它。我在赋值阶段得到了空引用异常。 通常它会在5到15之间的可变迭代次数之后阻塞。

以下是发生的事情:

Exception Screenshot

带有红色X的行正在抛出异常。工具提示在分配阶段显示空值。

1 个答案:

答案 0 :(得分:-1)

NullReferenceException并非来自ThisSernull的事实 此表达式中的某些内容为null:

chartEquitiesBySymbol.Series.Add(Outer.ThisValidation.RawData.RawDataStorage[i].StringedIndex);

这是你需要弄清楚的。

由于异常是在作业的右侧抛出的,因此作业目标仍然是null