9

アプリケーションに少し問題がありました。
UI を 10 秒ごとに更新したいと考えています。最初にこれを使用しDispatcherTimerましたが、更新メソッドが Web から何かをロードする必要があり、この操作に時間がかかるため、UI が短時間ブロックされます。今、ある種のバックグラウンド ワーカーについて考えたところ、BackgroundTasks を見つけました。
バックグラウンド タスクの問題は、私が正しく理解している限り、アプリが中断されていてもアップデーターとして機能することになっていることです。私はそれを必要としません。アプリが中断されている場合ではなく、アプリが実行されている場合にのみ更新したいと思います。

これを解決する良い方法はありますか?これに何を使うべきか提案はありますか?

前もって感謝します!

4

4 に答える 4

12

そのためには2つのことが必要です。

  1. タイマー

    System.Timers.Timer10秒間隔でUIを更新できます。

  2. 発車係

    メインUIスレッドDispatcher.Invokeを保持せずにUIを変更するにはを使用する必要があります。代わりに、メソッドはメインUIスレッド以外の別のスレッド(メソッド)で呼び出され、メインUIスレッドに変更を警告するために使用する必要があります。ProcessTimerDispatcher

    Process() // method to be called after regular interval in Timer
    {
        // lengthy process, i.e. data fetching and processing etc.
    
        // here comes the UI update part
        Dispatcher.Invoke((Action)delegate() { /* update UI */ });
    }
    
于 2012-11-24T00:44:28.110 に答える