用于更新UI的后台计时器?

Tor*_*enJ 7 c# windows-runtime

我的申请有点问题.
我想每隔10秒在我的UI上更新一些内容.我首先使用了一个DispatcherTimer,但它会在很短的时间内阻止我的UI,因为更新方法需要从Web加载一些东西,这个操作需要一些时间.现在我想到了某种背景工作者,我找到了BackgroundTasks.
就我理解的而言,后台任务的问题是,即使应用程序被暂停,它们也应该作为更新程序.我不需要那个.我只想更新我的应用是否正在运行,如果它被暂停.

有没有好办法解决这个问题?有什么建议可以用于此吗?

提前致谢!

Fur*_*dar 11

你需要两件事:

  1. 计时器

    您可以System.Timers.Timer使用10秒间隔更新UI .

  2. 调度员

    您需要使用Dispatcher.Invoke更改UI而不保留主UI线程.相反,该方法Process应该在除主UI线程之外的单独线程(Timer方法)上调用,并在其中用于警告主UI线程以进行更改.Dispatcher

    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 */ });
    }
    
    Run Code Online (Sandbox Code Playgroud)