Explorar o código

use SystemClockTimer

Daniel Chalmers hai 1 mes
pai
achega
ffdfc6eb40
Modificáronse 1 ficheiros con 10 adicións e 8 borrados
  1. 10 8
      DesktopClock/SettingsWindow.xaml.cs

+ 10 - 8
DesktopClock/SettingsWindow.xaml.cs

@@ -9,7 +9,6 @@ using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
 using System.Windows.Media;
-using System.Windows.Threading;
 using DesktopClock.Properties;
 using Microsoft.Win32;
 
@@ -29,7 +28,7 @@ public partial class SettingsWindow : Window, INotifyPropertyChanged
         @"hh\:mm\:ss",
     };
 
-    private readonly DispatcherTimer _previewTimer;
+    private readonly SystemClockTimer _previewTimer;
     private readonly PropertyChangedEventHandler _settingsPropertyChanged;
 
     private string _previewCaption = string.Empty;
@@ -71,12 +70,8 @@ public partial class SettingsWindow : Window, INotifyPropertyChanged
         _settingsPropertyChanged = (_, _) => RefreshDerivedState();
         Settings.PropertyChanged += _settingsPropertyChanged;
 
-        _previewTimer = new DispatcherTimer(
-            TimeSpan.FromSeconds(1),
-            DispatcherPriority.Background,
-            (_, _) => UpdatePreview(),
-            Dispatcher);
-
+        _previewTimer = new SystemClockTimer();
+        _previewTimer.SecondChanged += PreviewTimer_SecondChanged;
         _previewTimer.Start();
         RefreshDerivedState();
     }
@@ -309,11 +304,18 @@ public partial class SettingsWindow : Window, INotifyPropertyChanged
     protected override void OnClosed(EventArgs e)
     {
         _previewTimer.Stop();
+        _previewTimer.SecondChanged -= PreviewTimer_SecondChanged;
+        _previewTimer.Dispose();
         Settings.PropertyChanged -= _settingsPropertyChanged;
         Settings.Save();
         base.OnClosed(e);
     }
 
+    private void PreviewTimer_SecondChanged(object sender, EventArgs e)
+    {
+        Dispatcher.Invoke(UpdatePreview);
+    }
+
     private void BrowseBackgroundImage_Click(object sender, RoutedEventArgs e)
     {
         var dialog = new OpenFileDialog