我有一个DataTable
,其中我添加了一些具有DateTime
数据类型的额外列。
就像这样:MyTable.Columns.Add("myDate",typeof(DateTime));
我没有为此列分配任何值。我只是在MyTable中添加一个新行,如下所示:
DataRow dr=null;
dr=MyTable.NewRow();
dr["Name"]= "abc";//updating all the columns except datetime column in the same way.
lock(MyTable)//locking dt as this code is part of
Parallel.ForEach
{
MyTable.Rows.Add(dr);
MyTable.AcceptChanges();
}
在上述Parallel.ForEach
循环完成后,当我检查 DateTime 列的值时,它显示随机记录的值"01-01-0001 12:00:00 AM"。
- 每次我运行代码时,都会为不同的记录显示此默认日期时间值。
- 有时,对于所有记录,此值为null。
我无法理解为什么默认值显示在我的日期列中.
即使我没有在这些单元格中设置任何内容,每个单元格的值也不相同。
请帮助我摆脱这个问题。
ADO.NET 类对于多线程写入操作是不安全的。根本不允许使用Parallel.ForEach
来并行更新来自多个线程的DataTable
,而无需同步。如果这样做,结果是不确定的。您可能会遇到异常、丢失数据、数据损坏、内部状态损坏等等。没有人知道究竟会发生什么,但结果是可取的概率微乎其微。