加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 更新UI的后台计时器?

发布时间:2020-12-15 07:38:58 所属栏目:百科 来源:网络整理
导读:我的申请有点问题. 我想每隔10秒在我的UI上更新一些内容.我首先使用DispatcherTimer,但它会在短时间内阻止我的UI,因为更新方法需要从Web加载一些东西,这个操作需要一些时间. 现在我想到了某种背景工作者,我找到了BackgroundTasks. 就我理解的而言,后台任务的
我的申请有点问题.
我想每隔10秒在我的UI上更新一些内容.我首先使用DispatcherTimer,但它会在短时间内阻止我的UI,因为更新方法需要从Web加载一些东西,这个操作需要一些时间.
现在我想到了某种背景工作者,我找到了BackgroundTasks.
就我理解的而言,后台任务的问题是,即使应用程序被暂停,它们也应该作为更新程序.我不需要那个.
我只想更新我的应用是否正在运行,如果它被暂停.

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

提前致谢!

解决方法

你需要两件事:

>计时器

您可以使用10秒间隔更新System.Timers.Timer中的UI.
>调度员

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

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 */ });
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读