我通过DataTable.LoadDatatRow
如下调用刷新数据表:
public void FillTable(DataTable myTable, IEnumerable<MyObject> readings)
{
var index=0;
foreach(var reading in readings) {
LoadRow(myTable, reading, index++);
}
}
protected override void LoadRow(DataTable table, MyObject objectValue, int index)
{
table.LoadDataRow(
new object[] {
objectValue.property1 + "a",
objectValue.property2 + "b",
/* ... etc. */
}, LoadOption.OverwriteChanges);
}
现在,为了便于阅读,这有点简化,并且LoadDataRow
行有点长(大约 9 个数组值),但不包含大的函数调用或任何东西,只是格式化字符串和一些?
情况。当我的表中有约 50 个值时,此代码可以正常工作,并且刷新频率约为 10 Hz。但是一旦我得到比正常更多的值(比如 200),它就会呈指数增长,我得到 ~0.2 Hz。这太慢了。
有谁知道为什么当我有大量可枚举的读数时,我的速度会呈指数级下降?是否与它有关OverWriteChanges
(我很确定我需要其他原因);或者可能在 中创建一个对象LoadDataRow
,还是有其他原因?
我玩过不同的游戏LoadOptions
,这似乎不是问题。我只是无法解释为什么我看到处理时间如此巨大的增加,而且我不知道如何解决它。