0

DispatcherTimer()を使用して更新関数を呼び出し、データが別の場所で更新されるデータベースからリストビューを更新しています。したがって、リストビューはダッシュボードのように使用されます。

    private void Update(){
        DateTime d = DateTime.Today;
        items = (from i in DataManager.Entities.signals
                                where i.Date > d
                                orderby i.Id descending
                                select i).Take(MAX_NUM_OF_DISPLAYED);

        this.lvDashboard.ItemsSource = items;          
    }

一定量のデータに達するまでは正常に動作します。データベース内の最後に更新されたデータをクエリして、itemssourceに追加できることはわかっています。私は自分のコードをシンプルで明確にしようとしています。何かアイデアや提案をいただけますか?

- - - - - - - - アップデート - -

1000行のデータで1〜2秒ごとに更新され、データウィンドウは最新のデータに移動し続けます。プロセスメモリが増え続ける理由。DataTableはDBの更新を監視していますか?DBが他の場所で更新された場合、DBバインドされたDataTableはそれ自体を更新しますか?

4

2 に答える 2

0

より多くの作業が必要になりますが、データのサブセットのみが変更された場合は、アイテムを ObservableCollection にして、アイテムを追加および削除します。また、再バインドしないでください。

于 2012-03-19T13:25:30.393 に答える
0

DataView(DataTableデータベース テーブルを指している) にバインドしている場合は、自動的に更新Commitされ、GUI に表示されます。ただし、コード以外の何かがテーブルを更新し、GUI で更新されていることを確認する必要がある場合は、パブリッシャー/サブスクライバー モデルを検討する必要があります。DataTableDataView

于 2012-03-19T13:40:42.980 に答える