温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

利用WPF怎么实现一个定时刷新UI界面功能

发布时间:2021-02-08 17:30:49 来源:亿速云 阅读:577 作者:Leah 栏目:开发技术

本篇文章为大家展示了利用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  } }

上述内容就是利用WPF怎么实现一个定时刷新UI界面功能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

wpf
AI