5

生成される通知の速度と量に関して、次のコードは次のとおりです。

ObservableCollection<Foo> foo = new ObservableCollection<Foo>(bar);
this.SomeProperty = foo;

と同じ:

this.SomeProperty = new ObservableCollection<Foo>();

foreach (var v in bar) 
{
    this.SomeProperty.Add(v);
}

それらが同じである場合、生成された通知を何らかの方法でオフにすることは可能ですか?

目的: TelerikRadChartのSilverlightでの表示を高速化しようとしています。ObservableCollectionを含むプロパティを設定した後でも、表示に時間がかかるようです(ブラウザアプリでフリーズします)。チャートが描画されると、すべてが正しく機能します。

4

1 に答える 1

7
  1. プロファイリングまたはテストしてください。ドキュメントによると、 PropertyChangedイベントは、アイテムが追加、削除、変更、移動されたとき、またはリスト全体が更新されたときに発生します。したがって、このイベントをサブスクライブするだけのテスト コードを記述して、何が起こるかを確認できます。

  2. 実行速度が速く、スレッドセーフな監視可能なコレクション- OnChanged イベントの絶え間ない集中砲火が原因である場合は、一括更新後にのみ起動することを検討してください - 誰かがすでにこの作業を行っています

  3. http://www.telerik.com/help/silverlight/radchart-performance-tips-and-tricks.html は、ページの半分ほど下に記述されているシナリオを具体的に扱っています。彼らの結論は2と同じです - 実際、コードは非常に似ています:-)

バインディングが実際に行われる前にフリーズが発生している場合は、遅延が実際にレンダリングに基づいていないこと、または別のアクティビティ (コレクションの読み込みにかかる時間など) が原因ではないことを確認します。繰り返しますが、プロファイリングはあなたの友達です。

于 2012-02-01T15:50:29.800 に答える