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 :

[C#] Nombre de thread


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut [C#] Nombre de thread
    Bonjour à tous,

    je cherche le moyen de connaître le nombre de Thread d'une application en temps réel. J'ai pensée à WMI :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                Int32 Id = System.Diagnostics.Process.GetCurrentProcess().Id;
                WqlEventQuery Query = new WqlEventQuery("SELECT * FROM Win32_Process WHERE ProcessId=" + Convert.ToString(Id));
                ManagementEventWatcher Watcher = new ManagementEventWatcher(Query);
                while (true)
                {
                    ManagementBaseObject Obj = Watcher.WaitForNextEvent();
                    this.ThreadCountString = Obj["TreadCount"].ToString();
                }
    Cependant je reçoit une Exception comme quoi on ne peut pas faire d'event sur ma requête.

    Une idée ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    A vue de nez, c'est tout simplement parce que la classe WMI Win32_Process n'hérite pas de la classe __Event. Donc, je vois 2 options :

    - Soit tu fais une requête "normale" (pas une requête d'évènement) sur Win32_Process, et tu boucles là dessus (pas génial pour les perfs, et pas vraiment temps réel vu que c'est du polling)

    - Soit tu fais des requêtes d'évènement sur Win32_ThreadStart et Win32_ThreadStop, et quand l'évènement se produit tu requêtes sur Win32_Process pour avoir le ThreadCount du process associé à l'évènement du thread (NOTE : apparemment il faut être en mode admin pour recevoir ces évènements...)

    Sinon tu peux aussi utiliser la propriété Process.Threads, plutôt que de requêter sur Win32_Process

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Nikel merci voici le code du coup : (Win32_ThreadStart et Win32_ThreadStop n'existe pas, il faut ajouter Trace à la fin pour infos)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WqlEventQuery Query = new WqlEventQuery("SELECT * FROM Win32_ThreadStartTrace");
                ManagementEventWatcher Watcher = new ManagementEventWatcher(Query);
                while (true)
                {
                    ManagementBaseObject Obj = Watcher.WaitForNextEvent();
                    this.ThreadCountString = System.Diagnostics.Process.GetCurrentProcess().Threads.Count.ToString();
                }
    Et de même avec Win32_ThreadStopTrace.

    Merci !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par NeoKript Voir le message
    (Win32_ThreadStart et Win32_ThreadStop n'existe pas, il faut ajouter Trace à la fin pour infos)
    Indeed, j'avais mal copié

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

Discussions similaires

  1. Modification du nombre de threads par WebService
    Par globule71 dans le forum JOnAS
    Réponses: 2
    Dernier message: 31/10/2007, 14h43
  2. Nombre de Thread Maximum
    Par NESTLE dans le forum MFC
    Réponses: 1
    Dernier message: 07/06/2007, 09h04
  3. nombre max thread
    Par dark2 dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 07/03/2007, 15h28
  4. Nombre de Threads d'un programme
    Par c-ve dans le forum Delphi
    Réponses: 2
    Dernier message: 18/05/2006, 14h59
  5. Contrôler le nombre de thread simultané
    Par player734 dans le forum POSIX
    Réponses: 3
    Dernier message: 30/10/2005, 22h56

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