代码:

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. python中的encode()和decode()函数_python里面的encode和decode函数
  2. 计算机一级115,计算机一级BASIC模拟115.doc
  3. Java消息服务~@JmsListener集成
  4. 918国际导航网V4.2版整站源码
  5. NSOperation的使用细节 [3]
  6. 二叉树遍历代码_二叉树的题,就那几个框架,枯燥至极
  7. php选择排序从大到小,PHP选择排序
  8. python入门经典 财务-财务方面的学生如何学习python?
  9. 磁珠 符号_磁珠的主要功能是什么
  10. asp.net出现【视图状态消息身份验证错误】
  11. 农民讲习所建立通用程序 7 设计通用按键扫描模块
  12. linux c语言怎么把2个字符串拼起来,【C语言学习笔记】字符串拼接的3种方法 .
  13. 解决:无法加载文件 C:\Users\user\AppData\Roaming\npm\npx.ps1,因为在此系统上禁止运行脚本 。
  14. 机器学习 交叉验证与网格搜索调参
  15. 用Java解决牛客网题目BC30kiki和酸奶
  16. WPA_Suppliant简介
  17. 使用keras时候,pycharm控制台太多日志,导致最开始的有用信息被覆盖,解决方案
  18. 中国口罩市场现状调研及投资前景预测报告2022-2028年
  19. 全球教育ERP系统软件行业调研及趋势分析报告
  20. android 配色方案,最实用的APP UI配色方案和APP常用的颜色搭配参考

热门文章

  1. ui设计卡片阴影_UI设计形状和对象基础知识:阴影和模糊
  2. figma设计_5位来自杂乱无章的设计师的Figma技巧
  3. React 入门手册
  4. C语言第九次博客作业--指针
  5. cxGrid 在 GridMode = True 模式下实现标题点击排序以及标题列过滤筛选!!!
  6. Fibonacci Knapsack
  7. UITableView定制accessoryView出现的连带问题
  8. [信息收集] HCOMP 2010概况及收录论文
  9. fillcolor是什么意思_fill是什么意思
  10. python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用