WPF定时刷新UI界面
代码:
![](/assets/blank.gif)
![](/assets/blank.gif)
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 是无效的,即如下代码不能正常刷新界面:
![](/assets/blank.gif)
![](/assets/blank.gif)
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界面相关推荐
- WPF强制刷新UI界面
WPF强制刷新UI界面 需求 代码块 需求 在当前ViewModel类中执行某种数据列表的操作,希望View中绑定的Model类随着数据列表的改表实时刷新在View的界面上,我们可以定义一个界面强制刷 ...
- Qt刷新UI界面问题
当执行完settext()操作之后,如果后面死循环或者很占用主线程时间的处理,那么界面就不会立刻更新,只会等到逻辑处理完之后才会更新界面,那么有什么办法可以立刻更新界面呢? 第一种:将很占用主线程资源 ...
- python定时刷新tkinter界面_如何在python中“刷新”Tkinter窗口?
我试图通过一个按钮在Python中重新加载一个Tkinter窗口,但是我很难理解它.你看,它使用import random并从列表中随机生成单词,当你点击按钮时,我想把标签设置成不同的单词,就像掷骰子 ...
- Tkinter定时刷新页面或数据
1.说明 由于tkinter一旦开始执行进入mainloop,就相当于进入一个界面死循环状态,出不来:如果想做定时刷新tkinter界面的控件数据,必须调用tkinter.TK()自带的after函数 ...
- C# this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数
一.this.Invoke()的作用与用法.不阻塞UI界面线程的延时函数 Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时, ...
- Android开发:编程实现界面定时刷新
最近在开发过程中遇到一个需求,要求间隔固定时间主动更新界面的内容.调研了之后发现可以使用Handler机制实现上述功能,记录一下. 使用Handler机制实现的逻辑是,在Activity首次创建的时候 ...
- 如何定时刷新一个View的内容呢? 酷课堂iOS交流群问答(201901期)
酷课堂iOS交流群问答精华整理 以下内容由@客服妹子爬楼整理,限于篇幅,无法就所有问题做详细说明,感兴趣的小伙伴,可以添加小课QQ:3068527144,申请加入交流小群.希望大家碰到的这些问题,对你 ...
- 利用摄像头拍照并保存照片的程序(python实现,含UI界面)
摘要:许多情况下我们需要用到摄像头获取图像,进而处理图像,这篇博文介绍利用pyqt5.OpenCV实现用电脑上连接的摄像头拍照并保存照片.为了使用和后续开发方便,这里利用pyqt5设计了个相机界面,后 ...
- (转)android AppWidgetProvider 定时刷新问题
AppWidgetProvider是专门用来制作android桌面组件的东东 本来想做一个小时钟 但是在定时刷新的时候遇到了问题 很多资料和书上的方法是 在onUpdate()方法中 用Intent请 ...
最新文章
- 导入Excel表里的数据时产生【定义了过多字段】,但有时又是成功的
- arquillian_使用Arquillian测试安全的EJB
- 千万商家的智能决策引擎--AnalyticDB如何助力生意参谋双十一
- openstack用户列表_什么是OpenStack超级用户?
- Python类的调用之同一个文件里面
- Linux下企业级分区方案
- 属性匹配工具_k8s包管理工具Kustomize实战手册
- d1分辨率和960分辨率_选择2D艺术资产的分辨率
- 服务器bios界面usb无线网卡,修改BIOS添加网卡白名单问题
- Photoshop插件-增加细节-脚本开发-PS插件
- 数位板和sai2安装使用
- vue 使用ace编辑器
- 企业微信公众号怎么运营管理?
- 【高等数学】四.多元函数微分学和二重积分
- 三星手机使用应用沙盒动态修改sdk数据
- mysql 升序和降序
- 通过WIFI(不用数据线)连接Android手机调试
- Notepad++的第三方插件介绍中文翻译
- C语言编写简单的走迷宫小游戏
- 一款简单的声控报警电路