首页 > 编程 > .NET > 正文

WPF实现定时刷新UI界面功能

2024-07-10 12:49:04
字体:
来源:转载
供稿:网友

本文实例为大家分享了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 }}

说明:在 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 }}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表