2011-07-19 7 views
0

2つのコントロールで構成されるダイアログボックスがあります a)コンボボックスと b)グラフコントロール。WPFのダイアログ読み込み時間を最小限にする

ダイアログが初期化されるとき、コンボボックスには10個の項目が含まれます。

各アイテムの変更について、大きなデータポイントを読み込んでグラフコントロールにプロットする必要があるとします。 1回のアイテム変更あたりの全体のアクティビティには、約10秒かかります。

は2例あります

  1. 私は、ダイアログをロードし、グラフコントロールにそれをプロットしながら、最終的には大容量のデータを読み込み、コンボボックスの選択の変更も発射します]ダイアログボックスをダブルクリック

    。そのためダイアログには多くの時間がかかります。

  2. さらに詳しくコンボボックスで選択変更を行うと(ダイアログが起動されたとき)、データが再び読み取られます。ただし、ダイアログが既に起動されている場合は、別のスレッドでこのアクティビティを実行します。

しかし、私の質問はどのように私はポイント1でダイアログロード時間を最小限に抑えることができますか?私は、ダイアログの読み込み時間を最小限に抑える必要があります。

私は正確にポイント1で何が起こっているのか理解に苦労のビットを持っています!! 1

+0

は私が_」...グラフにそれをプロットし、あなたの質問のグラフが何であるかを尋ねることができます。 .. "_? –

+0

グラフを無視することができます –

+0

[UI仮想化](http://bea.stollnitz.com/blog/?p=338)と[データ仮想化](http:// bea。 stollnitz.com/blog/?p=344) –

答えて

0

を助けてください - あなたのプレス、ダイアログが閉じて、ダイアログを開き、あなたのメインウィンドウのボタンであり、今ダイアログを開くには長い時間がかかりますか?または、ダイアログがすでに開いていて、ダブルクリックすると遅くなります(これは意味がありません。なぜなら、これはポイント2でなければならないからです...)?

とにかく、私が正しく理解していて、あなたの主な問題はダイアログを開くとグラフがロードされるため、ダイアログが10秒後に表示され、次にこれがあなたの行うべきことです。

Loaded()イベントハンドラでコンボボックスにデータを入力し、の選択インデックス(適切なもの、たとえば0)を設定します。コンボボックスSelectedIndexChangedイベントハンドラグラフデータを取得するバックグラウンドスレッドを作成し、完了したらダイアログウィンドウ(例:this.Dispatcher.Invoke(...))を更新します。

私はあなたがポイント2を実装することで、すでにこれを行っていない来るか分かりませんが

...

関連する問題