wpf关闭窗口刷新页面_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();

IList list = new List();

list = HI.Get().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 taskList = new List();

BackgroundWorker worker = new BackgroundWorker();

worker.DoWork += (s, e) =>

{

user = HI.Get().UserCache.GetCurrentUserInfo();

taskList = HI.Get().GetCombatTaskByUserIDUnfinished(user.ID.ToString());

};

worker.RunWorkerCompleted += (s, e) =>

{

try

{

taskListView.ItemsSource = taskList;

}

catch { }

};

worker.RunWorkerAsync();

}

#endregion

}

}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值