将Parallel.ForEach与DataTable一起使用会引发对象引用异常

时间:2018-09-10 07:18:00

标签: c# datatable parallel.foreach

我的项目中有此代码。它会进行一些CPU处理,因此为了加快处理速度,我尝试使用Parallel.ForEach。

由于某种原因,并行执行会添加一个null项,从而在程序的稍后阶段导致“对象引用未设置为对象的实例”异常。

**它不应该添加null

工作代码

foreach (DataRow datarow in dataSet.Tables[0].Rows)
{    
   var item = new T();

   for (int i = 0; i < datarow.Table.Columns.Count; i++)
   {
      var columnName = datarow.Table.Columns[i].ColumnName;
      var columnValue = datarow[i];
      // set new object values
      // use reflection logic to grab values
   }

   finalList.add(item);
}

错误代码

List<DataRow> list = dataSet.Tables[0].AsEnumerable().ToList();

Parallel.ForEach<DataRow>(list, datarow =>
{    
   var item = new T();

   for (int i = 0; i < datarow.Table.Columns.Count; i++)
   {
      var columnName = datarow.Table.Columns[i].ColumnName;
      var columnValue = datarow[i];
      // set new object values
      // use reflection logic to grab values
   }

   finalList.add(item);
}

0 个答案:

没有答案