Je dois détecter quand Windows est arrêté (ou redémarré) ou lorsque l'utilisateur se déconnecte. Je dois fermer correctement l'application avant la fermeture de l'application. J'ai remarqué qu'aucun événement d'application de sortie n'est déclenché lorsque Windows ferme le jour.
J'ai lu le post Existe-t-il un moyen en c # pour détecter un arrêt/déconnexion de Windows et annuler cette action (après avoir demandé à l'utilisateur)
mais je ne sais pas où je dois effectuer les opérations avant de fermer. Merci.
Attachez une méthode de gestionnaire d'événements à SystemEvents.SessionEnding
event , et votre méthode de gestionnaire sera appelée chaque fois que l'événement est déclenché. La gestion de cet événement vous permettra d'annuler la fermeture de session en attente ou de l'arrêter, si vous le souhaitez. (Bien que cela ne fonctionne pas comme dans les systèmes d'exploitation actuels; pour plus d'informations, consultez la documentation MSDN ici .)
Si vous ne voulez pas annuler l'événement, mais réagissez simplement de manière appropriée, vous devez gérer le SystemEvents.SessionEnded
événement à la place.
Vous devez vous assurer que vous détachez vos gestionnaires d'événements lorsque l'application est fermée, car ces deux événements sont statiques.
Vous pouvez utiliser une solution native via pinvoke si votre code ne s'exécute pas dans une session non interactive (comme un service système):
//SM_SHUTTINGDOWN = 0x2000
bool bShutDownPending = GetSystemMetrics(SM_SHUTTINGDOWN) != 0;