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 :

Création d'un ensemble de timer


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut Création d'un ensemble de timer
    Bonjour,

    Avec l'un des programmes que j'ai développé, je crée un fichier xml "d'options" dans lequel je renseigne plusieurs variable que je voudrais récupérer mais dans des intervalles de temps souvent différentes.

    J'ai donc pensé à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Timers.Timer[] t;
    Puis aprés la récupération de mes variables dans un dataset, je récupère donc le nombre de variable que je veux et donc le nombre de Timer à utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t = new Timer[DSoptions.Tables["Variables"].Rows.Count];
    Ensuite avec une boucle, je peux renseigner les différentes valeurs de temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (DataRow line in DSoptions.Tables["Variables"].Rows)
    {
               t[i].Interval = Convert.Int32(line[3]);
               i++;
    }
    Par contre c'est là que je bloque, une fois tous ceci renseigné, comme puis-je faire pour renseigner les procédures exécutées au tick de chaque timer ?
    Car même si la procédure lancé est à peu de chose la même, les variables à passer en paramètre ne sont pas les mêmes.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Oula...Je renifle une petite erreur de conception.

    Pour répondre à ta question (si j'ai bien compris), il te faudrait une classe héritant de Timer à laquelle tu ajoutes tes fonctions et tu passes tes options par le biais du constructeur...Pas très propre mais plus facile à gérer que de multiples abonnements à des events...

    Combien de timers tu peux créer au maximum ? Et peux-tu montrer la "suite" du code ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    Bin le truc c'est que j'ai pas vraiment d'idée sur le nombre de timer qu'il me faut car les personnes veulent récupérer des données d'un automate alors ils peuvent en vouloir 2 au départ puis aprés en récupérer 10 voir 20 ...

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    Rah !
    Je viens de penser à un truc.

    J'ai construit une classe pour la stockage temporaire des variables, je crée un tableau du nombre de variable dont j'ai besoin :

    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
    class stockvar
        {
            private string nom;
            private string variable;
            private int temps;
            private string commentaire;
     
            public stockvar()
            {
     
            }
     
            public stockvar(string n, string v, int t, string c)
            {
                this.nom = n;
                this.variable = v;
                this.temps = t;
                this.commentaire = c;
            }
    }
    Est ce que dedans à la limite je pourrai mettre un Timer ?
    Comme ça pour chaque, valeur du tableau j'aurai mon Timer !

    Mais pourrai avoir des actions différentes sur les tick ?

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Je pense que ça doit être faisable avec 1 seul timer.

    Quel est le plus petit interval que tu utilises ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    Ca va tourner à la seconde minimum !

    Genre des variables récupéré tous les 20s d'autre toute les 2min ...
    Mais à mon avis pas moins de 10s.

    Donc la dans ma classe, je redéfini le tick ou alors je prend un seul TIMER et je me fais quelques minutes (heures ) de reflexion pour avoir un algo qui lance ou pas les demandes ? le plus simple ?

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par DarkBear
    Genre des variables récupéré tous les 20s d'autre toute les 2min ...
    Mais à mon avis pas moins de 10s.
    Arf, tu me plonges dans le doute...

    Ce que j'ai compris au départ, c'est que tu récupères une série de variables à partir desquelles tu vas définir un certain nombre de timers pour déclancher des actions à intervals réguliers.

    Avec ce nouveau message, je me demande si en fait tu ne dois pas aller chercher de nouvelles variables à intervals réguliers ? Si c'est le cas, elle viennent d'ou ces variables ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    Comme je l'ai dit au départ , un programme que je fais permet de créer un fichier xml contenant un ensemble de variable choisi.
    La structure des variables c'est :
    Son nom, son appelation OPC réel, son intervalle de récupération et un commentaire.

    Donc en faite aprés le service que je développe, se connecte au serveur OPC et doit récupérer le nombre de variables à l'intervalle de temps choisi, cette intervalle peut être identique mais peut être totalement différent. On peut avoir à récupérer 3 variables toujours en même temps puis aprés 1 mois on décide de récupérer des nouvelles variables mais toutes ces variables seront récupérer dans des intervalles de temps différentes.

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    ok, alors question idiote : pourquoi ne pas simplement récupérer les variables lorsque le fichier XML est modifié ?

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    Bin c'est ce que je fais déjà ça !

    J'ai du mal m'xprimer désolé :
    La récupération des valeurs des variables de l'automate sont dans des intervalles différents. C'est la valeur dans l'automate que je veux récupérer à tel ou tel instant !

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Bon, dans l'optique de ne pas créer x timers qui vont bouffer des threads, je passerais plutôt par un "scheduler".

    En gros, chaque action de lecture de l'automate peut être considérée comme une tâche; je ferai donc un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    public interface ISchedulableTask
    {
     DateTime LastExecution { get; set; }
     DateTime NextExecution { get; set; }
     int Interval { get; set; }
     void Execute();
    }
    Tu crées différentes classes implémentant cette interface, et tu fais gérer les exécutions par un scheduler avec 1 seul timer.

    Est-ce que tu vois le principe ?

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    Et bien jamais utilisé mais à moins que tu es un tuto sous la main je pense que google est mon ami !

  13. #13
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    ok merci je vais voir ce que je peux faire et je posterai ma solution.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/03/2011, 12h54
  2. Problème de création de tâches planifiées [Timer Jobs]
    Par Magicmodjo dans le forum SharePoint
    Réponses: 8
    Dernier message: 08/09/2008, 17h32
  3. Création d'ensembles
    Par an1981 dans le forum MATLAB
    Réponses: 2
    Dernier message: 24/12/2007, 11h47
  4. Création du timer dans une Dll
    Par Hokagge dans le forum MFC
    Réponses: 13
    Dernier message: 14/03/2006, 19h04
  5. Création d'un ensemble "dynamique"
    Par petitcoucou31 dans le forum Langage
    Réponses: 3
    Dernier message: 29/12/2004, 19h05

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