默认日期时间值显示在 DataTable 中,用于日期时间列中的随机记录,即使我没有在任何地方分配该值也是如此



我有一个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,而无需同步。如果这样做,结果是不确定的。您可能会遇到异常、丢失数据、数据损坏、内部状态损坏等等。没有人知道究竟会发生什么,但结果是可取的概率微乎其微。

最新更新