WPF定时刷新UI界面
代码:
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界面相关推荐
- 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请 ...
最新文章
- python中的encode()和decode()函数_python里面的encode和decode函数
- 计算机一级115,计算机一级BASIC模拟115.doc
- Java消息服务~@JmsListener集成
- 918国际导航网V4.2版整站源码
- NSOperation的使用细节 [3]
- 二叉树遍历代码_二叉树的题,就那几个框架,枯燥至极
- php选择排序从大到小,PHP选择排序
- python入门经典 财务-财务方面的学生如何学习python?
- 磁珠 符号_磁珠的主要功能是什么
- asp.net出现【视图状态消息身份验证错误】
- 农民讲习所建立通用程序 7 设计通用按键扫描模块
- linux c语言怎么把2个字符串拼起来,【C语言学习笔记】字符串拼接的3种方法 .
- 解决:无法加载文件 C:\Users\user\AppData\Roaming\npm\npx.ps1,因为在此系统上禁止运行脚本 。
- 机器学习 交叉验证与网格搜索调参
- 用Java解决牛客网题目BC30kiki和酸奶
- WPA_Suppliant简介
- 使用keras时候,pycharm控制台太多日志,导致最开始的有用信息被覆盖,解决方案
- 中国口罩市场现状调研及投资前景预测报告2022-2028年
- 全球教育ERP系统软件行业调研及趋势分析报告
- android 配色方案,最实用的APP UI配色方案和APP常用的颜色搭配参考
热门文章
- ui设计卡片阴影_UI设计形状和对象基础知识:阴影和模糊
- figma设计_5位来自杂乱无章的设计师的Figma技巧
- React 入门手册
- C语言第九次博客作业--指针
- cxGrid 在 GridMode = True 模式下实现标题点击排序以及标题列过滤筛选!!!
- Fibonacci Knapsack
- UITableView定制accessoryView出现的连带问题
- [信息收集] HCOMP 2010概况及收录论文
- fillcolor是什么意思_fill是什么意思
- python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用