Cet article présente principalement la fonction d'actualisation régulière de l'interface utilisateur dans WPF. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
L'exemple de cet article partage avec vous l'actualisation régulière de WPF. . Le code spécifique affiché sur l'interface utilisateur est pour votre référence. Le contenu spécifique est le suivant
Code :
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 } }
Instructions : Utilisez Contexte dans l'événement. de System.Timers.Timer Worker n'est pas valide, c'est-à-dire que le code suivant ne peut pas actualiser l'interface normalement :
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 } }
Vous pouvez également utiliser DispatcherTimer pour actualiser l'interface, mais les opérations fastidieuses ne peuvent pas être exécutées dans l'événement DispatcherTimer, sinon l'interface sera bloquée, ce qui prendra beaucoup de temps. Pour les opérations planifiées, telles que interroger la base de données , vous devez utiliser un autre System.Timers.Timer, qui. est relativement gênant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!