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 :
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) ...
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(); }
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
Partager