最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小OO 时间:2020-11-27 22:35:35
文档

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;});();}))。
推荐度:
导读本文实例为大家分享了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;});();}))。


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

 }
}

也可以使用 DispatcherTimer 刷新界面,但耗时的操作不能放在DispatcherTimer的事件中执行,否则界面会卡,那么耗时的定时操作,比如查询数据库,需要再用一个 System.Timers.Timer,相对比较麻烦。

文档

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;});();}))。
推荐度:
标签: 设置 定时 界面
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top