小编use*_*525的帖子

DataTable内部索引已损坏

我正在使用C#中的.NET WinForms应用程序,运行3.5 .NET框架.在这个应用程序中,我正在设置a DataColumn中的.Expression成员DataTable,如下所示:

DataColumn column = dtData.Columns["TestColumn"];
column.Expression = "some expression";
Run Code Online (Sandbox Code Playgroud)

我实际设置的第二行Expression有时会导致以下异常:

FileName=
LineNumber=0
Source=System.Data
TargetSite=Int32 RBInsert(Int32, Int32, Int32, Int32, Boolean)
System.InvalidOperationException: DataTable internal index is corrupted: '5'.
   at System.Data.RBTree`1.RBInsert(Int32 root_id, Int32 x_id, Int32 mainTreeNodeID, Int32 position, Boolean append)
   at System.Data.RBTree`1.RBInsert(Int32 root_id, Int32 x_id, Int32 mainTreeNodeID, Int32 position, Boolean append)
   at System.Data.Index.InitRecords(IFilter filter)
   at System.Data.Index.Reset()
   at System.Data.DataTable.ResetInternalIndexes(DataColumn column)
   at System.Data.DataTable.EvaluateExpressions(DataColumn column)
   at System.Data.DataColumn.set_Expression(String value)
Run Code Online (Sandbox Code Playgroud)

关于错误何时发生,没有明显的押韵或理由; 在加载相同的数据集时,它可能工作正常,但重新加载它将失败,反之亦然.这让我认为它与竞争条件有关,在DataTable我正在尝试修改其中一个列时,正在发生另一个写操作.但是,与DataTables 相关的代码不是多线程的,只能在UI线程上运行.

我搜索过网络和 …

.net c# datatable

27
推荐指数
4
解决办法
4万
查看次数

标签 统计

.net ×1

c# ×1

datatable ×1