WPF实现定时刷新UI界面的实例详解
导读:收集整理的这篇文章主要介绍了WPF实现定时刷新UI界面的实例详解,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了WPF实现定时刷新UI界面功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享...
收集整理的这篇文章主要介绍了WPF实现定时刷新UI界面的实例详解,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了WPF实现定时刷新UI界面功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享了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();
IListTES_NOTICE>
list = new ListTES_NOTICE>
();
list = HI.GetINoticeService>
().GetListPage(null, DateTime.MinValue, DateTime.MinValue, 1, 50, ref total);
Dispatcher.Invoke(new Action(() =>
{
noticeListView.ItemsSource = list;
}
));
}
catch {
}
}
);
}
#endregion }
}
说明:在 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();
IListTES_COMBAT_TASK>
taskList = new ListTES_COMBAT_TASK>
();
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (s, e) =>
{
user = HI.GetCache.ICacheService>
().UserCache.GetcurrentUserInfo();
taskList = HI.GetITaskService>
().GetCombatTaskByUserIDUnfinished(user.ID.ToString());
}
;
worker.RunWorkercompleted += (s, e) =>
{
try {
taskListView.ItemsSource = taskList;
}
catch {
}
}
;
worker.RunWorkerAsync();
}
#endregion }
}
也可以使用 DispatcherTimer 刷新界面,但耗时的操作不能放在DispatcherTimer的事件中执行,否则界面会卡,那么耗时的定时操作,比如查询数据库,需要再用一个 System.Timers.Timer,相对比较麻烦。
以上就是WPF实现定时刷新UI界面的实例详解的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: WPF实现定时刷新UI界面的实例详解
本文地址: https://pptw.com/jishu/593066.html
