private void SetupLifecycleListeners() { Resuming += delegate(object s, object e) { if (_firstActivationExecuted) { PreviousExecutionState = ApplicationExecutionState.Suspended; OnResuming(this, e, AppExecutionState.Suspended); } else { PreviousExecutionState = ApplicationExecutionState.Terminated; OnResuming(this, e, AppExecutionState.Terminated); } _firstActivationExecuted = true; }; Suspending += async delegate(object s, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); try { if (AutoExtendExecutionSession) { // unspecified will be revoked by suspension await ExtendedSessionService.StartSaveDataAsync(); } var navs = WindowWrapper.ActiveWrappers.SelectMany(x => x.NavigationServices); foreach (INavigationService nav in navs) { // individual frame-level await nav.SuspendingAsync(); if (AutoSuspendAllFrames) { await nav.SaveAsync(); } } // application-level await OnSuspendingAsync(this, e, PrelaunchActivated); } finally { ExtendedSessionService.Dispose(); deferral.Complete(); } }; }
private void SetupLifecycleListeners() { Resuming += (s, e) => StartupOrchestratorAsync(OriginalActivatedArgs, StartKind.Launch); Suspending += async(s, e) => { var deferral = e.SuspendingOperation.GetDeferral(); try { if (AutoExtendExecutionSession) { // unspecified will be revoked by suspension await ExtendedSessionService.StartSaveDataAsync(); } var navs = WindowWrapper.ActiveWrappers.SelectMany(x => x.NavigationServices); foreach (INavigationService nav in navs) { // individual frame-level await nav.SuspendingAsync(); if (AutoSuspendAllFrames) { await nav.SaveAsync(); } } // application-level var isPrelaunch = (OriginalActivatedArgs as LaunchActivatedEventArgs)?.PrelaunchActivated ?? false; await OnSuspendingAsync(this, e, isPrelaunch); } finally { ExtendedSessionService.Dispose(); deferral.Complete(); } }; }
private void SetupLifecycleListeners() { Resuming += (s, e) => { if (_firstActivationExecuted) { PreviousExecutionState = ApplicationExecutionState.Suspended; OnResuming(this, e, AppExecutionState.Suspended); } else { PreviousExecutionState = ApplicationExecutionState.Terminated; OnResuming(this, e, AppExecutionState.Terminated); } _firstActivationExecuted = true; }; Suspending += async(s, e) => { var deferral = e.SuspendingOperation.GetDeferral(); try { if (AutoExtendExecutionSession) { // unspecified will be revoked by suspension await ExtendedSessionService.StartSaveDataAsync(); } var navs = Services.NavigationService.NavigationService.Instances.Select(x => x).Reverse(); foreach (INavigationService nav in navs) { // individual frame-level await nav.SuspendingAsync(); if (AutoSuspendAllFrames) { try { await nav.SaveAsync(); } catch { var frameState = nav.Suspension.GetFrameState(); if (frameState != null) { frameState.Remove("CurrentPageType"); frameState.Remove("CurrentPageParam"); frameState.Remove("NavigateState"); } Exit(); } } } // application-level await OnSuspendingAsync(this, e, PrelaunchActivated); } finally { ExtendedSessionService.Dispose(); deferral.Complete(); } }; }