代码:

using NHibernate.Criterion;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Visifire.Charts;namespace SunCreate.CombatPlatform.Client
{public partial class MainPage : UserControl{private System.Timers.Timer timerNotice = null;public MainPage(){InitializeComponent();}private void MainPage_Loaded(object sender, RoutedEventArgs e){#region 通知公告if (timerNotice == null){BindNotice();timerNotice = new System.Timers.Timer();timerNotice.Elapsed += new System.Timers.ElapsedEventHandler((o, eea) =>{BindNotice();});timerNotice.Interval = 60 * 1000;timerNotice.Start();}#endregion}private void MainPage_SizeChanged(object sender, SizeChangedEventArgs e){}#region 绑定通知公告private void BindNotice(){System.Threading.Tasks.Task.Factory.StartNew(() =>{try{int total = 0;TES_NOTICE info = new TES_NOTICE();IList<TES_NOTICE> list = new List<TES_NOTICE>();list = HI.Get<INoticeService>().GetListPage(null, DateTime.MinValue, DateTime.MinValue, 1, 50, ref total);Dispatcher.Invoke(new Action(() =>{noticeListView.ItemsSource = list;}));}catch{}});}#endregion}
}

View Code

说明:在 System.Timers.Timer 的事件中使用 BackgroundWorker 是无效的,即如下代码不能正常刷新界面:

using NHibernate.Criterion;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Visifire.Charts;namespace SunCreate.CombatPlatform.Client
{public partial class MainPage : UserControl{private System.Timers.Timer timerNotice = null;public MainPage(){InitializeComponent();}private void MainPage_Loaded(object sender, RoutedEventArgs e){#region 通知公告if (timerNotice == null){BindNotice();timerNotice = new System.Timers.Timer();timerNotice.Elapsed += new System.Timers.ElapsedEventHandler((o, eea) =>{BindNotice();});timerNotice.Interval = 60 * 1000;timerNotice.Start();}#endregion}private void MainPage_SizeChanged(object sender, SizeChangedEventArgs e){}#region 绑定通知公告private void BindNotice(){PT_USER_INFO user = new PT_USER_INFO();IList<TES_COMBAT_TASK> taskList = new List<TES_COMBAT_TASK>();BackgroundWorker worker = new BackgroundWorker();worker.DoWork += (s, e) =>{user = HI.Get<Cache.ICacheService>().UserCache.GetCurrentUserInfo();taskList = HI.Get<ITaskService>().GetCombatTaskByUserIDUnfinished(user.ID.ToString());};worker.RunWorkerCompleted += (s, e) =>{try{taskListView.ItemsSource = taskList;}catch { }};worker.RunWorkerAsync();}#endregion}
}

View Code

也可以使用 DispatcherTimer 刷新界面,但耗时的操作不能放在DispatcherTimer的事件中执行,否则界面会卡,那么耗时的定时操作,比如查询数据库,需要再用一个 System.Timers.Timer,相对比较麻烦。

转载于:https://www.cnblogs.com/s0611163/p/7110632.html

WPF定时刷新UI界面相关推荐

  1. WPF强制刷新UI界面

    WPF强制刷新UI界面 需求 代码块 需求 在当前ViewModel类中执行某种数据列表的操作,希望View中绑定的Model类随着数据列表的改表实时刷新在View的界面上,我们可以定义一个界面强制刷 ...

  2. Qt刷新UI界面问题

    当执行完settext()操作之后,如果后面死循环或者很占用主线程时间的处理,那么界面就不会立刻更新,只会等到逻辑处理完之后才会更新界面,那么有什么办法可以立刻更新界面呢? 第一种:将很占用主线程资源 ...

  3. python定时刷新tkinter界面_如何在python中“刷新”Tkinter窗口?

    我试图通过一个按钮在Python中重新加载一个Tkinter窗口,但是我很难理解它.你看,它使用import random并从列表中随机生成单词,当你点击按钮时,我想把标签设置成不同的单词,就像掷骰子 ...

  4. Tkinter定时刷新页面或数据

    1.说明 由于tkinter一旦开始执行进入mainloop,就相当于进入一个界面死循环状态,出不来:如果想做定时刷新tkinter界面的控件数据,必须调用tkinter.TK()自带的after函数 ...

  5. C# this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数

    一.this.Invoke()的作用与用法.不阻塞UI界面线程的延时函数 Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时, ...

  6. Android开发:编程实现界面定时刷新

    最近在开发过程中遇到一个需求,要求间隔固定时间主动更新界面的内容.调研了之后发现可以使用Handler机制实现上述功能,记录一下. 使用Handler机制实现的逻辑是,在Activity首次创建的时候 ...

  7. 如何定时刷新一个View的内容呢? 酷课堂iOS交流群问答(201901期)

    酷课堂iOS交流群问答精华整理 以下内容由@客服妹子爬楼整理,限于篇幅,无法就所有问题做详细说明,感兴趣的小伙伴,可以添加小课QQ:3068527144,申请加入交流小群.希望大家碰到的这些问题,对你 ...

  8. 利用摄像头拍照并保存照片的程序(python实现,含UI界面)

    摘要:许多情况下我们需要用到摄像头获取图像,进而处理图像,这篇博文介绍利用pyqt5.OpenCV实现用电脑上连接的摄像头拍照并保存照片.为了使用和后续开发方便,这里利用pyqt5设计了个相机界面,后 ...

  9. (转)android AppWidgetProvider 定时刷新问题

    AppWidgetProvider是专门用来制作android桌面组件的东东 本来想做一个小时钟 但是在定时刷新的时候遇到了问题 很多资料和书上的方法是 在onUpdate()方法中 用Intent请 ...

最新文章

  1. 导入Excel表里的数据时产生【定义了过多字段】,但有时又是成功的
  2. arquillian_使用Arquillian测试安全的EJB
  3. 千万商家的智能决策引擎--AnalyticDB如何助力生意参谋双十一
  4. openstack用户列表_什么是OpenStack超级用户?
  5. Python类的调用之同一个文件里面
  6. Linux下企业级分区方案
  7. 属性匹配工具_k8s包管理工具Kustomize实战手册
  8. d1分辨率和960分辨率_选择2D艺术资产的分辨率
  9. 服务器bios界面usb无线网卡,修改BIOS添加网卡白名单问题
  10. Photoshop插件-增加细节-脚本开发-PS插件
  11. 数位板和sai2安装使用
  12. vue 使用ace编辑器
  13. 企业微信公众号怎么运营管理?
  14. 【高等数学】四.多元函数微分学和二重积分
  15. 三星手机使用应用沙盒动态修改sdk数据
  16. mysql 升序和降序
  17. 通过WIFI(不用数据线)连接Android手机调试
  18. Notepad++的第三方插件介绍中文翻译
  19. C语言编写简单的走迷宫小游戏
  20. 一款简单的声控报警电路

热门文章

  1. 陌生人社会_陌生人之旅
  2. ux和ui_他们说,以UX / UI设计师的身份加入一家初创公司。 他们说,这会很有趣。
  3. JS 几种数据类型及其转换
  4. SVN四部曲之SVN设置详解深入
  5. SegmentFault Hackathon 文艺复兴
  6. Python中如何把一个UTC时间转换为本地时间
  7. Python 2.7 Tutorial —— 流程控制
  8. Delphi 的字符及字符串[4] - 字符串、字符指针与字符数组
  9. 【转载】负数的二进制
  10. 自学python(一)