3

大量のデータを表示しようとしているグリッド コントロールがあるため、UI スレッドでのレンダリングに時間がかかります。

画面がビジー状態かどうか (レンダリング中) に応じてアニメーション表示するローディング バーを追加しました。

ただし、グリッドがレンダリングしようとすると、読み込みバーがフリーズします。これは、UI スレッドが 1 つしかなく、そのスレッドがビジーであるためだと思います。

ローディングバーのアニメーションを維持できる方法を知っている人はいますか?

どうもありがとう、

マット

4

2 に答える 2

0

UIレンダリングからの列挙またはデータフェッチを処理する必要があります。別のスレッドでUIレンダリングの準備ができたデータを取得するための処理部分を実行します。

http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

于 2011-02-07T15:20:04.290 に答える
0

一度にすべてのデータをレンダリングするグリッドを主張する場合は、古い Windows フォームの "DoEvents()" メソッドのように、グリッドのレンダリング コードが "yield" できるかどうかにすべて依存します。実際には、レンダリング中に処理を UI スレッドに戻さないように実装されているように思われるため、プログレス バーは更新されません。

グリッドがコンテンツをレンダリングしている間に、独自のコードを呼び出すことはありますか? その場合、それらのインスタンスを使用して進行状況バーの状態を更新できます。

グリッドのコンテンツの仮想化について検討しましたか? VirtualizingStackPanel でレンダリングする必要がある FrameworkElements をラップすると、基本的に無料で UI 仮想化を取得できます。もう少し複雑にしたい場合は、データセットを PagedCollectionView クラスでラップし、. 詳しくはこちらをご覧ください。同じ種類の仮想化を実装する別の (より簡単な?) 方法については、こちらも参照してください。

于 2011-02-07T17:09:19.163 に答える