大量のデータを表示しようとしているグリッド コントロールがあるため、UI スレッドでのレンダリングに時間がかかります。
画面がビジー状態かどうか (レンダリング中) に応じてアニメーション表示するローディング バーを追加しました。
ただし、グリッドがレンダリングしようとすると、読み込みバーがフリーズします。これは、UI スレッドが 1 つしかなく、そのスレッドがビジーであるためだと思います。
ローディングバーのアニメーションを維持できる方法を知っている人はいますか?
どうもありがとう、
マット
大量のデータを表示しようとしているグリッド コントロールがあるため、UI スレッドでのレンダリングに時間がかかります。
画面がビジー状態かどうか (レンダリング中) に応じてアニメーション表示するローディング バーを追加しました。
ただし、グリッドがレンダリングしようとすると、読み込みバーがフリーズします。これは、UI スレッドが 1 つしかなく、そのスレッドがビジーであるためだと思います。
ローディングバーのアニメーションを維持できる方法を知っている人はいますか?
どうもありがとう、
マット
UIレンダリングからの列挙またはデータフェッチを処理する必要があります。別のスレッドでUIレンダリングの準備ができたデータを取得するための処理部分を実行します。
http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
一度にすべてのデータをレンダリングするグリッドを主張する場合は、古い Windows フォームの "DoEvents()" メソッドのように、グリッドのレンダリング コードが "yield" できるかどうかにすべて依存します。実際には、レンダリング中に処理を UI スレッドに戻さないように実装されているように思われるため、プログレス バーは更新されません。
グリッドがコンテンツをレンダリングしている間に、独自のコードを呼び出すことはありますか? その場合、それらのインスタンスを使用して進行状況バーの状態を更新できます。
グリッドのコンテンツの仮想化について検討しましたか? VirtualizingStackPanel でレンダリングする必要がある FrameworkElements をラップすると、基本的に無料で UI 仮想化を取得できます。もう少し複雑にしたい場合は、データセットを PagedCollectionView クラスでラップし、. 詳しくはこちらをご覧ください。同じ種類の仮想化を実装する別の (より簡単な?) 方法については、こちらも参照してください。