1

次の問題:

プログラムでファイルをアップロードしたいのですが、ユーザーが設定できる必要があります。ファイルが非常に大きいため、ユーザーが GUI で追加の設定を行えるように、ファイルを新しいスレッドにロードしたいと考えています。(速度:速い)

  1. ユーザー選択ファイル
  2. プログラムは新しいスレッドを開始します
  3. スレッドはファイルをロードしています
  4. プログラムはディスパッチャーを呼び出して、ファイルをレイアウトに設定します

これまでのところ、ステップ 1 から 3 は問題なく動作します。

しかし、ステップ 4 では、Dispatcher.Invoke を作成します。

private void SetNewContent(object newContent)
{
    _userControl.Dispatcher.Invoke(
        DispatcherPriority.Normal,
        new System.Action(
            delegate()
            {
                _userControl.SetContent(newContent);
            }
        )
    };
}

メソッド _userControl.SetContent は遅いです。このメソッドは 10,000 ページで約 5 秒かかり、ユーザーにとっては長すぎます。この間、ユーザーは GUI 設定を変更できません。

それを防ぐ可能性はありますか?

4

2 に答える 2

0

同様の問題がありました。使用していたグリッドコントロールの「仮想化」モードを使用しなかったことが原因でした。仮想モードの場合、表示されているセクションのUI要素のみが作成され、後でスクロールするときに再利用されます(10,000個の要素すべてを一度に作成するのではありません)。

日付を表示するために使用しているコントロールの種類(ベンダー、つまりInfragistics / Telerik / DevExpress)は何ですか?仮想化をサポートしているかどうかを確認してください。最近ではほとんどがサポートされています。

于 2012-05-14T10:44:02.487 に答える