背景定时更新UI?(Background timer to update UI?)

2019-07-04 02:33发布

我有一个小问题,我的应用程序。
我想更新每隔10秒我的UI的东西。 我先用DispatcherTimer对于这一点,但它会阻止我的UI进行了很短的时间,因为更新方法需要从web加载的东西,这个操作需要一定的时间。 现在我想到了某种后台工作的,我发现BackgroundTasks。
与后台任务的问题,据我理解正确的话,那他们应该作为,即使应用程序暂停更新程序。 我不需要这样。 我只是想,如果,如果它被挂起我的应用程序运行不更新。

有没有办法解决这个问题的好办法? 任何建议使用什么呢?

提前致谢!

Answer 1:

你需要为它两件事情:

  1. 计时器

    您可以更新UI System.Timers.Timer与间隔10秒。

  2. 调度员

    您需要使用Dispatcher.Invoke更改UI未持有主UI线程 。 代替该方法Process应该被称为一个单独的线程Timer法),比主UI线程其它,并使用Dispatcher在它提醒主UI线程的变化。

     Process() // method to be called after regular interval in Timer { // lengthy process, ie data fetching and processing etc. // here comes the UI update part Dispatcher.Invoke((Action)delegate() { /* update UI */ }); } 


Answer 2:

你需要创建一个用于运行代码,获取并处理来自网站上的信息的一部分线程。 这样一来,你的表格会毫不犹豫,因为这将是在不同的线程比处理部分。

这对代码项目的文章应该让你开始。



Answer 3:

此外,您还可以启动一个定时器,其中有一个经过的事件,每出现一个计时器经过一定的时间周期。

  1. http://www.dotnetperls.com/timer


文章来源: Background timer to update UI?