0

UIスレッドと他の「ワーカー」スレッドの間でSilverlightの処理がどのように処理されるか教えてください。

ビューモデルを介してビュー内の数百の複雑な UI オブジェクトを更新する必要があるシナリオがあります。各アイテムは、独自のビューモデルによって支えられています。

各ビューモデルに、動作によって背景色を変更する IsSelected などのプロパティがある場合、最小限の UI スレッド ブロッキングに変更を加えるにはどうすればよいですか?

(数百の) ビューモデルを更新すると、UI スレッドが約 4 秒間ブロックされます。ブロッキングの原因を特定するにはどうすればよいですか? より効率的な更新方法はありますか?

ありがとう

4

1 に答える 1

0

一度に行うよりも効率的な方法は間違いなくあります。

Silverlight 以外に固有の解決策は、これらの更新を DispatcherTimer 遅延呼び出しで数ミリ秒間隔で配置することです。これにより、スレッドは実行パスを続行するための「呼吸スペース」を確保できます。

ただし、アーキテクチャについても考慮する必要があります。数百の VM を扱っている場合は、視聴者にとって重要な順に、遅延読み込みと画面の更新を順番に使用する価値があるかもしれません。

詳細については、この回答も参照してください: https://stackoverflow.com/a/1710868/21217

于 2012-07-16T23:31:09.253 に答える