Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung von Beispielen für die regelmäßige Aktualisierung der Benutzeroberfläche in WPF
Dieser Artikel stellt hauptsächlich die Funktion der regelmäßigen Aktualisierung der Benutzeroberfläche in WPF vor. Er hat einen gewissen Referenzwert.
Das Beispiel dieses Artikels zeigt die regelmäßige Aktualisierung von WPF . Der spezifische Code, der auf der Benutzeroberfläche angezeigt wird, dient als Referenz. Der spezifische Inhalt lautet wie folgt:
Anweisungen: Verwenden Sieusing 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 } }Hintergrund
Der System.Timers.Timer Worker ist ungültig, d. h. der folgende Code kann die Schnittstelle nicht normal aktualisieren:
Sie können die Schnittstelle auch mit DispatcherTimer aktualisieren, zeitaufwändige Vorgänge können jedoch nicht ausgeführt werden Das Ereignis von DispatcherTimer, andernfalls bleibt die Schnittstelle hängen, was viel Zeit in Anspruch nimmt, z. B. das Abfragen derusing 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 } }-Datenbank. Sie müssen einen anderen System.Timers.Timer verwenden ist relativ mühsam.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für die regelmäßige Aktualisierung der Benutzeroberfläche in WPF. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!