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 :

Rechercher un processus en doublon et le tuer, ca marche presque


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Par défaut Rechercher un processus en doublon et le tuer, ca marche presque
    Bonjour à tous,

    J'ai récupérà un code qui me permet de tuer un processus s'il est lancé, par ex la calculatrice.

    Voila la classe :
    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
    18
    19
    20
    21
    using System;
    using System.Diagnostics;
     
    namespace Empecher2eExe2
    {
        class Class1
        {
            public bool FindAndKillProcess(string nomDuProcess)
            {
                foreach (Process clsProcess in Process.GetProcesses())
                {
                    if (clsProcess.ProcessName.StartsWith(nomDuProcess))
                    {
                        clsProcess.Kill();
                        return true;
                    }
                }
                return false;
            }
        }
    }
    Et là je suis confronté a 2 problemes : je voudrais que cela tourne en boucle. J'ai donc mis dans un do - while qui tourne en boucle (pas très beau mais je ne vois pas comment faire autrement) mais du coup visual studio me refuse l'acces à clsProcess.Kill();

    De plus je ne vois pas comment faire pour dire que je refuse le lancement d'un DEUXIEME process. On lance la calculatrice une fois, c'est bon, mais toutes les autres fois ca doit tuer le nouveau process à chaque fois.

    Merci d'avance !

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Par défaut Process
    Bonjour,

    En premier pour bien comprendre, vous avez une application extérieure qui doit surveiller un process.
    Dans ce contexte il faudrait récupérer le LifeTime(StartTime par exemple) des process et tuer le plus jeune. Ensuite au moment du kill il est bon d'attendre la fin du process.
    Le problème de la boucle est qu'elle bloque le système, une parade simple serait de rendre un peu de temps au système avec un Sleep(x).

    Cordialement.

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    La conception en elle même est tordue!
    Il existe un pattern tout à fait adapté et éprouvé pour cet situation: le pattern singleton. http://faqcsharp.developpez.com/?pag...gleinstanceapp

  4. #4
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Par défaut
    Par contre, si j'ai bien compris, le pattern singleton n'autorise qu'une seule instance de lui-même, alors que je cherche a faire cela pour un exe lancé séparément.
    Ou alors je me trompe ?

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Effectivement. Mais controler une instance d'un autre programme n'ammènera qu'une solution bancale.

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    @yougoudai: si tu essaies de faire en sorte que ton appli ne soit lancée qu'une seule fois, ce n'est pas la bonne solution. (Ou veux-tu vraiment surveiller le lancement d'un programe externe?)
    Tu trouveras peut être une piste ici (j'ai déjà utilisé la méthode avec le mutex)

Discussions similaires

  1. [XL-2007] Recherche et dénombrement de doublons
    Par dodo69 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/04/2011, 11h15
  2. Recherche et effacement de doublons
    Par thebuzzman dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/11/2010, 07h18
  3. rechercher un processus
    Par thieu17 dans le forum Windows 2000/Me/98/95
    Réponses: 1
    Dernier message: 24/06/2009, 17h54
  4. Recherche d'emplacement de doublons
    Par solorac dans le forum Excel
    Réponses: 12
    Dernier message: 17/07/2007, 17h37
  5. Script permettant de trouver les processus root et de les tuer
    Par biglittlekiss dans le forum Administration système
    Réponses: 3
    Dernier message: 18/11/2006, 10h40

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