次のように呼び出して、データ テーブルを更新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
だことがありますが、それは問題ではないようです。処理時間がこれほど大幅に増加している理由を説明できず、それを修正する方法もわかりません。