[C#] application metro et cycle de vie
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:
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 ?
:merci: d'avance
Anne