stop timer before calculating time after resume

This commit is contained in:
2020-06-08 14:12:51 +03:00
parent 7bcc2ed7d0
commit 04ef9ac8e9

View File

@@ -151,7 +151,7 @@ namespace PomoTime
default: default:
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
} }
SchedulePeriodOverNotification(); RescheduleNotification();
} }
else else
{ {
@@ -235,7 +235,7 @@ namespace PomoTime
{ {
ClearScheduledNotifications(); ClearScheduledNotifications();
if(!MainViewRunningState.IsRunning) if (!MainViewRunningState.IsRunning)
{ {
return; return;
} }
@@ -313,6 +313,7 @@ namespace PomoTime
{ {
var deferral = e.SuspendingOperation.GetDeferral(); var deferral = e.SuspendingOperation.GetDeferral();
SaveLocalState(); SaveLocalState();
StopTimer();
deferral.Complete(); deferral.Complete();
} }
@@ -339,7 +340,7 @@ namespace PomoTime
private void FastForwardTime(DateTime since) private void FastForwardTime(DateTime since)
{ {
TimeSpan TimeFromSuspend = DateTime.Now - since; TimeSpan TimeFromSuspend = DateTime.Now - since;
if(TimeFromSuspend.TotalMilliseconds < 0) if (TimeFromSuspend.TotalMilliseconds <= 0)
{ {
return; return;
} }
@@ -372,12 +373,15 @@ namespace PomoTime
ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
if (localSettings.Values["SuspendTime"] != null) if (localSettings.Values["SuspendTime"] != null)
{ {
StopTimer();
SuspendTime = new DateTime((long)localSettings.Values["SuspendTime"]); SuspendTime = new DateTime((long)localSettings.Values["SuspendTime"]);
FastForwardTime(SuspendTime); FastForwardTime(SuspendTime);
StartTimer();
} }
SaveLocalState();
} }
private void MainPageLoaded(object sender, RoutedEventArgs e) private void StartTimer()
{ {
if (Timer == null) if (Timer == null)
{ {
@@ -385,16 +389,30 @@ namespace PomoTime
{ {
await Dispatcher.RunAsync(CoreDispatcherPriority.High, await Dispatcher.RunAsync(CoreDispatcherPriority.High,
() => () =>
{ {
TimerTick(); TimerTick();
}); });
}, TimeSpan.FromSeconds(1)); }, TimeSpan.FromSeconds(1));
} }
} }
private void StopTimer()
{
if (Timer != null)
{
Timer.Cancel();
Timer = null;
}
}
private void MainPageLoaded(object sender, RoutedEventArgs e)
{
StartTimer();
}
private void MainPageUnloaded(object sender, RoutedEventArgs e) private void MainPageUnloaded(object sender, RoutedEventArgs e)
{ {
Timer.Cancel(); StopTimer();
} }
protected override void OnNavigatedTo(NavigationEventArgs e) protected override void OnNavigatedTo(NavigationEventArgs e)
@@ -402,7 +420,7 @@ namespace PomoTime
base.OnNavigatedTo(e); base.OnNavigatedTo(e);
MainViewRunningState = (RunningState)e.Parameter; MainViewRunningState = (RunningState)e.Parameter;
StopTimer();
ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
if (localSettings.Values["SuspendTime"] != null) if (localSettings.Values["SuspendTime"] != null)
{ {
@@ -414,7 +432,7 @@ namespace PomoTime
Reset(); Reset();
SaveLocalState(); SaveLocalState();
} }
StartTimer();
RescheduleNotification(); RescheduleNotification();
} }