Bonjour

Ça fait bien longtemps que je n'ai pas utilisé le forum ^^
J'espère poster dans la bonne catégorie (!). Je suis passé récemment sur un projet d'application métro... et j'avoue que le C# a pas mal évolué depuis 2005 !!

J'ai des questions à propos du cycle de vie des applications metro. En effet, mon appli a une sauvegarde automatique de son état courant au moment de la fermeture de l'application.
Dans mon fichier App.xaml.cs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
        public App()
        {
            InitializeComponent();
            Suspending += OnSuspending;
        }
 
        async void OnSuspending(object sender, SuspendingEventArgs e)
        {
            // Save suspending state
            var deferral = e.SuspendingOperation.GetDeferral();
            Model.SaveCurrentStateAsync();
            await StateManager.Instance.SaveAsync();
            deferral.Complete();
        }
 
        protected override void OnLaunched(LaunchActivatedEventArgs args)
        {            
            if (args.PreviousExecutionState == ApplicationExecutionState.Running)
            {
                Window.Current.Activate();
                return;
            }
            SettingsManager.Instance.ApplicationSettingsChanged += Instance_ApplicationSettingsChanged;
            Window.Current.Content = new ExtendedSplash(args);
            Window.Current.Activate();
        }
Ceci me permet de bien gérer le cas d'un utilisateur qui ferme l'application et qui attends 10 à 15secondes pour redémarrer (cas ou args.PreviousExecutionState ==ApplicationExecutionState.ClosedByUser) ...

Mon problème vient quand l'utilisateur redémarre l'application plus tôt (cas du args.PreviousExecutionState ==ApplicationExecutionState.NotRunning).

Je ne sais pas quelle solution s'offre à moi ... y a t il un moyen de détecté que l'appli a fermé prématurément (et qu'il a perdu des donnée due à son impatience)? Un moyen de bloquer le redémarrage si le suspendedState n'est pas terminé ?

Avez vous des suggestions pour gérer mon cas ?
d'avance
Anne