特定のシナリオを念頭に置いていませんが、DispatcherTimerではなくTimerを使用したいシナリオを考えていたときに、この質問が頭に浮かびました。
タイマーイベントが発生するたびに計算量の多いタスクを実行する必要があるシナリオでは、 UIに小さな変更を加えると、パフォーマンスの点で次のようになります。
- 通常のタイマーを使用してから、アプリケーションのディスパッチャーを使用してUIを変更します
- DispatcherTimerを使用します(必要に応じて、非同期のバックグラウンドワーカーで計算量の多い作業を行う可能性があります)。
私の推測では、UIスレッドのブロックをできるだけ長く解除しておくと、ユーザーエクスペリエンスが向上すると思います。これが望ましい場合、そのようなシナリオで注意すべき問題はありますか?
編集:
質問が明確ではないと感じたので、作り上げた例ではありますが、具体的なものを追加してみます。
たとえば、2分ごとに大きなファイルを読み取る必要があり、それが終わったら、リストボックスにアイテムを追加する必要があります。ファイルの読み取り/処理に10〜15秒かかるとしましょう。その間、UI作業は行いません。このようなもののための最良のアプローチは何でしょうか?