首页后端开发ASP.NETWPF实现定时刷新UI界面的实例详解

WPF实现定时刷新UI界面的实例详解

时间2024-01-30 21:34:03发布访客分类ASP.NET浏览899
导读:收集整理的这篇文章主要介绍了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
C#单例模式的实现以及性能对比的实例 jquery怎样实现元素自动消失又显示

游客 回复需填写必要信息