Imaginez, nous avons deux applications .net. L'application "A" lance l'application "B" en utilisant la classe System.Diagnostics.Process
. Alors "A" veut tuer "B" par la méthode Process.Kill
. Comment "B" peut-il déterminer que quelqu'un le tue?Comment déterminer la suppression de l'application
Répondre
Je ne pense pas qu'il soit possible que l'application réponde à être tué ... Je pense que cela fonctionne plus au niveau du système d'exploitation comme lors de l'utilisation du gestionnaire de tâches.
L'utilisation de Process.Kill() peut ne pas être correcte dans ce contexte, pouvez-vous fournir plus d'informations sur le problème que vous essayez de résoudre?
Oui, j'ai trouvé que "Un processus ne peut pas s'empêcher d'être terminé." Je pense que nous n'avons pas l'occasion de le déterminer. http://msdn.microsoft.com/fr-fr/library/ms686714(VS.85).aspx – alga
Peut-être que vous pouvez essayer cette façon dans le code de processus B ...
// We're in Process B.... System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess(); proc.EnableRaisingEvents = true; proc.Exited += new EventHandler(proc_Exited); static void proc_Exited(object sender, EventArgs e) { // Handle here that we got killed... }
Je ne peux pas dire avec confiance que cela va fonctionner ... la nature même du système d'exploitation qui envoie un « tuer » à un processus est dépendant de l'implémentation, et en tant que tel, il n'y a pas de moyen infaillible garanti pour le processus B de savoir qu'il est en train d'être tué. Comme vous n'avez pas indiqué explicitement si le processus B est un processus géré/non géré, je vais faire la base de l'hypothèse qu'il est effectivement géré comme le tag est '.net', S'il s'agit d'une application WinForm, un événement Closing
dans winForms aura une raison dans ce que l'argument de gestionnaire d'événements ou utilisez une instance ApplicationDomain comme indiqué ci-dessous:
AppDomain thisDom = AppDomain.CurrentDomain; thisDom.ProcessExit += new EventHandler(thisDom_ProcessExit); // static void thisDom_ProcessExit(object sender, EventArgs e) { // Handle the situation here where the AppDomain is going to be unloaded and killed! }
Hope this helps, Meilleures salutations, Tom.
duplication de http://stackoverflow.com/questions/1372250/how-to-detect-a-kill-process-event –