Exemplo n.º 1
0
        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();
                }
            };
        }
Exemplo n.º 2
0
        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();
                }
            };
        }
Exemplo n.º 3
0
        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();
                }
            };
        }