IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Stopper un processus


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut Stopper un processus
    Bonsoir,

    J'ai développé un logiciel et je souhaite qu'à l'appuie d'un bouton le processus se stop. C'est compliqué à expliquer pourquoi je ne veux pas de Close();
    J'utilise ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.Diagnostics.Process monProcess = System.Diagnostics.Process.Start("Start_MonLogiciel");
    monProcess.Kill();
    Je constate que ça a un effet au niveau de sa consommation de ressources mais cela ne ferme pas le logiciel. J'aimerais que ça feme le logciel comme lorsque je stop le processus via le gestionnaire des tâches de windows.

    Merci

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour ,

    En gros tu veux quitter l'application ? . Dans ce cas tu peux utiliser Application.Exit() .
    throw new NoSignatureException();

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    En faite j'ai une application qui communique avec un site et avec un VPS, j'ai eus des soucis qui ont provoqués la persistance du processus. En faite l'application sert à mettre à jour des fichiers qui sont dans C://ProgramFile et par défaut il n'y a pas les droits d'écriture alors il faut lancer en tant qu'administrateur mais certaines personnes oublient tout le temps de le faire. Il y a alors un message d'erreur et si on ferme alors l'application, le processus reste malgré le fait que j'ai un Close(); sur le bouton de fermeture. Peut-être est-ce lié à l'utilisation d'un threads pour que ça ne bloque pas lors du téléchargement des fichiers en dernière version disponible.

    Je verrais ce que ça donne en mettant un Application.Exit() après chaque message d'erreur.

    Il peut aussi arriver que le site n'est pas accessible car surchargé à la suite d'une attaque. Depuis je suis passé sur cloudflare donc c'est réglé mais bon si des gens connaissent encore l'IP réelle cloudflare ne sert à rien.

  4. #4
    Membre régulier
    Homme Profil pro
    Apprenti en développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Apprenti en développement logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 67
    Points : 97
    Points
    97
    Par défaut
    Tu pourrais passer par une boucle. Tu prends tous les processus, pour chaque processus tu regardes le nom et si ça t'appartiens, tu kill.

    Voici ce par quoi je suis passé pour une des mes applications :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach (Process MyProcess in Process.GetProcesses())
                        {
                            if (MyProcess.ProcessName == "Nomdetonappli")
                            { 
                                MyProcess.Kill();
                            }
                        }
    J'espère t'avoir aidé.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2015
    Messages : 51
    Points : 37
    Points
    37
    Par défaut
    A mon sens le principal problème c'est que tu n’intercepte pas l'erreur pour pouvoir la traite.

    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
     
    try
    {
     
    	foreach (Process MyProcess in Process.GetProcesses())
    	{
    	  if (MyProcess.ProcessName == "Nomdetonappli")
    	  { 
    		MyProcess.Kill();
    	  }
    	}
    }
    catch (Exception e)
    {
    	Console.WriteLine("{0}", e.Message);
    	Console.ReadKey();	
    }
    Cela résout pas le soucis mais si on comprend l’exception on pourraient apporter une solution plus concrète. Tu pourrais aussi utiliser une commande pour killer le processus à partir de ton code. Cela ce fait aussi avec System.Diagnostics.Process.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Bonsoir,

    Désolé de vous avoir fais perdre votre temps ...
    Je lançais via Visual Studio ... si je lance avec l'exécutable ça fonctionne, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Identifier et stopper un processus trop long
    Par Ksawery82 dans le forum C++
    Réponses: 1
    Dernier message: 29/11/2011, 18h46
  2. [PowerShell] stopper un processus qui ne répend pas
    Par cesar333 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 19/09/2011, 20h17
  3. Stopper un processus en cours
    Par sunwallis dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 11/05/2010, 16h09
  4. Stopper le processus d'une autre session.
    Par NejNej dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/10/2009, 15h38
  5. Stopper un processus
    Par DiverSIG dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 17/03/2009, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo