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

VB.NET Discussion :

Déclaration dynamique d'objets


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Déclaration dynamique d'objets
    Bonjour,
    J'ai un petit souci de déclaration d'objets.

    Je voudrais utiliser des compteurs perfmon afin de prendre les infos des cpu mais sans savoir à l'avance combien de CPU seront détectés.

    je déclare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private pc0 As New System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "0")
    Private pc1 As New System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "1")
    Private pc2 As New System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "2") ' etc... dans la partie public class du form.
    Ensuite dans ma procédure j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .Series(1).Points.Add(CInt(pc0.NextValue).ToString) 
    .Series(2).Points.Add(CInt(pc1.NextValue).ToString) 
    .Series(3).Points.Add(CInt(pc2.NextValue).ToString)
    etc..

    Et tout se passe bien parce que c'est hardcodé.
    Mais comment faire si sur un serveur j'ai 8 CPU et sur un autre 2 ?
    Est t'il possible de déclarer dynamiquement un objet ?
    ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for E=0 to environement.processor.count 
    Private pc(E) As New System.Diagnostics.PerformanceCounter("Processor", "% Processor Time",E) 
    next E
    ?
    Où sinon quelle méthode utilisez-vous pour ce genre de cas ?
    Je vous remercie d'avance.
    JL,

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    oui, tu as déjà une partie de la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i as integer = 0 to Environment.ProcessorCount -1
      'instancier un truc avec dim variable as new ...
      'utilisation de la variable
    next
    tout peut etre instancié ou adressé dynamiquement
    en winform (mais c'est à peu près pareil en wpf) quand on pose un bouton sur l'interface graphique ca génère du code dim nombouton as new button, et ce code est exécuté

    pour de l'adressage dynamique il faut stocker tout ce que tu créés dans des variables ou des collections
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Déclaration dynamique d'objets
    Merci beaucoup Pol63
    le problème que je rencontre est que je dois déclarer les objets dans la partie Class du Form (avant les procédures et fonctions) du coup, je ne peux pas mettre de code style boucle .. l'ideal aurait été un tableau d'objet mais je ne trouve nulle part de référence à ce type d'objet.

    si je ne déclare pas l'objet de cette façon que je le déclare à chaque prise de valeur, j'ai un freeze d'une seconde à chaque fois.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pas compris

    mais comme je disais si tu veux accéder à des choses instanciées à la volée dans plusieurs membres il faut les ranger dans des collections


    exemple avec des boutons en windows forms :
    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
    22
    23
     
    private _boutons as new list(of button) ' une collection est un tableau à taille dynamique, ici les éléments sont typés
     
    private sub init(n as integer)
      for i as integer = 0 to n ' on ne sait pas combien à l'avance
         dim b as new button()
         addhandler b.click, addressof buttonclick
         b.top = i * 20
         b.text = "bouton " & i.tostring
         _boutons.Add(b) ' ajout dans la collection
      next
    end sub
     
    private sub moveall()
      for each b in _boutons ' parcours de tous les boutons précédemment créés
        b.left += 10
      next
    end sub
     
    private sub buttonclick(sender as object, e as system.Eventargs) ' gestion d'un évènement avec plusieurs instances qui pointent sur la même sub
       dim boutoncliqué = directcast(sender, button) ' sender contient l'élement déclencheur, donc pas besoin de rechercher dans la collection
       messagebox("vous avez cliqué sur " & boutoncliqué.text)
    end sub
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Parfait ;)
    ça répond bien à ma question ;-) super merci !

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

Discussions similaires

  1. Déclaration dynamique de variables objets
    Par Anduriel dans le forum Langage
    Réponses: 7
    Dernier message: 04/08/2013, 15h28
  2. Déclaration dynamique de noms de colonnes
    Par bibirdge dans le forum Oracle
    Réponses: 3
    Dernier message: 10/11/2005, 11h05
  3. Création dynamique d'objets ?
    Par Arthur A. dans le forum C++
    Réponses: 6
    Dernier message: 15/06/2005, 23h55
  4. création dynamique d'objet, projet win32
    Par noinneh dans le forum MFC
    Réponses: 5
    Dernier message: 03/02/2005, 16h07
  5. [Reflexivite]création dynamique d'objet et Héritage
    Par norkius dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 26/10/2004, 11h37

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