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

Windows Presentation Foundation Discussion :

monitoring plusieurs device en meme temps


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2004
    Messages : 161
    Par défaut monitoring plusieurs device en meme temps
    Bonjour;

    j'ai un réseau d'antenne,chaque antenne est reconnu par son adresse IP,j'ai crée une application qui parcours toutes les antenne et récupéré quelque info utile,j’utilise pour cela Net-SNMP(OID) combinés a wpf pour le design et ça marche plutôt bien,maintenant je voudrais stocké les performance de chaque antenne a un moment t pour avoir une moyenne hourly et daily,et mon problème est la ,comment faire pour récupéré tout les données en même temps,j'ai cherché sur le web j'ai trouvé les thread,cela pourras t'il m'aider? car j'ai plus de 1000 site..

    un tuyau svp ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    si tu as déjà fait du pas à pas dans ton code tu as du voir la ligne d'exécution avancer ligne par ligne
    ceci correspond à un thread (par défaut qu'on appelle le thread principal)
    on peut avoir plusieurs threads par processus (voire beaucoup), et donc ca fait que plusieurs choses peuvent être exécutées en même temps
    (que ca soit au même endroit dans le code ou à des endroits différents)

    pour ton monitoring le mieux serait un thread par antenne, chaque thread bouclant sur le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while (true)
    {
      System.Threading.Thread.Sleep(100); // à choisir entre 1 et autant que tu veux, ca met le thread en pause pendant x milliseconde, ca évite que ca ne prenne trop de processeur donc à lier à ce que tu gères, si 10 minutes suffisent c'est pas plus mal
      // traitement lecture infos antennes
      // enregistrement ou maj de l'ui
    }
    tu peux encapsuler ca dans une classe qui contient les infos de l'antenne (ip et autres)
    dans le constructeur tu peux démarrer un thread
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var th = new Thread(nomVoid);
    th.IsBackground = true; // pour que le thread s'arrête quand le thread parent s'arrête (souvent le processus, sinon quand tu fermes ta fenetre ca continue)
    th.Start();
    un thread démarre sur un void, et s'arrête à la fin du void (d'où le while true)

    pour l'enregistrement pas de soucis, par contre pour modifier l'ui ce n'est pas possible depuis un autre thread que le thread principal
    pour ça il faut soit passer par des invokes (application.current.currentdispatcher.invoke(()=>unautrevoid(des paramètres)) soit faire un timer qui va lire des infos sur cette classe (les données non UI peuvent être lues et écrites par des threads différents)

    je terminerais sur le fait le multi threading peut amener autant de problèmes qu'il n'en résoud
    dans certains cas on s'en fout, dans d'autres ca peut créer des bugs
    par exemple si i vaut 5 et que 2 threads en même temps font i = i + 1 alors i peut valoir 6 au lieu de 7 (lecture de i quasi en même temps, +1, puis un thread fait le set à 6 et l'autre aussi)
    ou encore si un thread fait un foreach sur une collection (type list) et qu'un autre fait .add pendant ce temps ca plante
    mais pour ces problèmes il y a aussi des solutions (incrément atomique, lock, readerwriterlockslim, collections thread safe etc...) mais bon à potasser seulement si tu penses qu'il risque d'y avoir des collisions ^^

    thread safe est un mot qu'on retrouve souvent dans la doc du framework .net, une classe thread safe ne contient que des membres thread safe, un membre thread safe est un membre qui peut etre appelé par plusieurs threads en même temps sans avoir de problèmes (grace à un lock souvent, un lock interdisant à plusieurs threads différents de rentrer dans la même portion de code limitée par le lock, les autres threads attendants devant le lock leur tour (à utiliser avec parcimonie et reflexion car ca baisse les performances))
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2004
    Messages : 161
    Par défaut
    Merci pour la réponse claire

    en effet le code est simple,je me connecte a l'antenne via l'adresse IP et récupère les données avec net-snmp,les données sont récupérer chaque minute et pour toutes les antenne pour qu'a la fin de l'heure j'aurais 60 valeurs de chaque compteur et pouvoir calculer la moyenne
    pour ma part je n'ai jamais travailler principalement avec les thread,donc d’après ton code ,et pour 1000 antenne,comment contrôler les itération pour le nombre d'antenne,

    Merci

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    pas compris

    tu fais un foreach sur ta liste d'ip pour faire un new laclassequigere(l'ip) et ca se débrouille
    et tu peux faire une méthode pour sauvegarder les résultats sur cette classe ausi
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2004
    Messages : 161
    Par défaut
    OK parfait

    au fait je n'ai pas encore fait le monitoring,ce que j'ai fait c'est que je me connecte au antenne avec leurs IP (foreach) et je récupére certain data fixe,comme serial number,frequence utilisé...etc
    pour le monitoring je récupérer des valeurs comme le niveau de signal,SNR,modulation....etc,ce sont des valeurs qui peuvent changer a tous moment,et je voudrais avoir une moyenne de ses valeurs pour chaque antenne
    donc si j'ai bien compris je fait un foreach pour chaque ip puis la suite sera faites automatiquement,avec les thread bien sur.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    ce qu'il faut que tu fasses c'est une classe dont le constructeur prend en paramètre ce qu'est une antenne (ip au moins)
    tu stockes l'ip dans une propriété
    tu fais une méthode qui récupère les infos (et qui les stockes dans une autre propriété, tu pourras donc afficher cette prorpriété si nécessaire)
    (l'ip nécessaire pour se connecter sera dans la propriété de la classe)

    tu testes cette méthode de réupération des infos et une fois que c'est bon tu rajoutes le démarrage du thread dans le contructeur et la méthode qui while true, sleep, appel mth lecture, appel mth save en bdd
    et là au démarrage de ton appli tu créés une instance de cette classe pour chaque antenne (ca vient d'une bdd peut etre ...) en fournissant l'ip

    la moyenne pourra être faite sur lecture de la bdd par requete
    ou calculé par encore autre chose ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [JSP]Valider plusieurs saisie en meme temps
    Par mamiberkof dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/05/2006, 08h14
  2. [XSLT] Transformer plusieurs XML en même temps
    Par oamram dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/04/2006, 13h41
  3. [TP] Plusieurs sons en même temps
    Par gusgus dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 17/11/2005, 11h59
  4. Réponses: 8
    Dernier message: 06/07/2004, 14h17
  5. Plusieurs commandes en meme temps
    Par caribou_belle dans le forum Linux
    Réponses: 7
    Dernier message: 18/09/2003, 17h07

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