I am filling datatable in dataset by iterating through collection and sorting it:
foreach (var item in items)
{
DataRow newRow = dataTable.NewRow();
contractRow["column1"] = item.Value1;
contractRow["column2"] = item.Value2;
dataTable.Rows.Add(newRow);
}
dataTable.DefaultView.Sort = "column1 asc";
Everything works fine.
But when I'm trying to generate datatable in parallel:
Parallel.ForEach(items, (item) =>
{
DataRow newRow = dataTable.NewRow();
contractRow["column1"] = item.Value1;
contractRow["column2"] = item.Value2;
lock (sync)
{
dataTable.Rows.Add(newRow);
}
});
dataTable.DefaultView.Sort = "column1 asc";
sorting fails with
ArgumentException: An item with the same key has already been added.
Any idea why this happens?