2010-07-24 12 views
1

Je doute que ce soit même possible. Votre application est donc en cours d'exécution et l'utilisateur décide de mettre fin au processus via le Gestionnaire des tâches. Existe-t-il une méthode/action pour sauvegarder les données pendant le processus? Je doute qu'il y ait mais j'ai dû demander.Formulaire Windows C# Tué par le Gestionnaire des tâches ... Existe-t-il un moyen d'exécuter la fonction d'arrêt?

De même, si un utilisateur arrête/redémarre le PC (comme dans Windows Update/Redémarrage manuel), quelle action l'application exécutera-t-elle? Window_Unloaded? Sur cette deuxième question, je voudrais trouver un moyen de m'assurer que mon application ne se présente pas comme une situation «si vous voulez redémarrer, tuer cette application» et que vous voulez sauvegarder les données nécessaires.

Vos deux cents sont grandement appréciés!

+0

Si le processus est en cours de destruction, qu'est-ce que vous ressentez le besoin de faire? Votre processus est en train d'être tué pour une raison. –

Répondre

3

Il n'est pas possible de faire ce que vous voulez sauf si vous avez deux processus; on surveille le statut de l'autre et fait des choses à sa fin. Le processus de surveillance peut être une application de service Windows sans interface graphique.

Windows envoie un message de fermeture à chaque application ouverte lors de l'arrêt normal. Vous pouvez exécuter du code (généralement des tâches d'entretien) à la réception du message et quitter l'application. Cela ne devrait pas prendre longtemps ou Windows demandera automatiquement à l'utilisateur s'il veut tuer l'application. Forcer l'arrêt tue tous les processus immédiatement (sans ordre particulier/prévisible). Donc vous ne pouvez pas (facilement) le détecter.

Je vous suggère de sauvegarder tout ce dont vous avez besoin le plus rapidement possible pour éviter la perte de données lorsque le processus d'application est tué.

1

Si quelque chose se termine votre application en cours d'exécution, alors vous n'avez pas l'occasion de faire quoi que ce soit, juste mourir. Vous modifiez votre application de telle sorte que toutes les données sont toujours enregistrées dans un emplacement persistant. Par conséquent, si l'application meurt, les données persistantes sont conservées. De toute évidence, vous devez concevoir pour cela. Ensuite, si l'utilisateur fait un "save", vous vous engagez dans le "vrai" datastore.

Si Windows doit redémarrer, il doit envoyer un message à votre application, que vous pouvez gérer. Vous ne savez pas si cela fonctionne pour toutes les applications de type GUI/console/service.