1

少し問題があります。定期的に変更される MySQL テーブル スキーマがあります (つまり、列とその型)。この要件の結果として、固定のシリアル化可能な型ではなく、DataTable の形式で格納するように ORM をプログラムしました。

このテーブルをウィンドウに表示することに興味があります。正確には、GridView オブジェクト (Telerik ライブラリの RadGridView タイプ) にバインドされます。次のコードを使用してテーブルをバインドしました。

DataTable dt = GetMyTable();
radGridView.ItemsSource = dt.DefaultView;

これはうまくいきます。ただし、このテーブルを次のコードで更新すると、処理が非常に遅くなります。

dt.BeginLoadData();
for (object[] new_row in new_rows) {
    dt.Rows.Add(new_row);
}
dt.EndLoadData();
dt.AcceptChanges();

DataTable は更新時に多数のイベントをダンプすることを理解していますが、少なくとも理論的には、BeginLoadData() 呼び出しによってそれらをオフにする必要があります。

また、このページに記載されている手順で BindingSource というアダプターを使用してみました

これにより、少し速度が向上しましたが、それでも十分に効率的ではありません。

ここでの目的は、DataTable を使用してバッチ読み込みを行うことです。ここでは、スレッドから行の新しいバッチが追加されるたびに、GridView も更新されて新しい行が表示されます。そして明らかに、私はこれをできるだけ効率的に行いたいと思っています。

入力はありますか?

ありがとう。

4

0 に答える 0