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 :

lier un evenement a une fonction


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Par défaut lier un evenement a une fonction
    Salut a tous,
    j'ai codé un petit timer et je souhaite qu'a chaque "tick" une fonction soit appelé , rien de bien mechant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Timer t = new Timer();
                t.Interval = 1000;
     
                t.Tick += new System.EventHandler(this.t_tick);
     t.Start();
    }
    ....
     private void t_tick(object sender, EventArgs e)
            { 
    .....
    }
    le problème c'est que la methode t_tick n'est jamais appelé .
    Que faire?
    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

    t'es sûr ? tu as mis un breakpoint dans t_tick ?
    ton code me semble pourtant correct...

  3. #3
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         t.Tick += new System.EventHandler(this.t_tick);
    Oula, je crois que tu fais un peu confusion...
    t.Tick est une propriété, donc tu ne peux pas t'abonner à une propriété.
    Tu t'abonnes qu'à des évènements et de plus si tu veux réaliser une fonction tous les ticks, ça va être difficile...
    Un tick correspond à 100 nanoSecondes, si ton traitement dure plus longtemps que 100nanosecondes (ce dont je suis certain...) alors tu va faire ramer ton systeme, certainement un joli écran bleu ou crash de ton application...
    Sinon tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    while (true)
    {
     
       //ton code
       Thread.Sleep(1); //Pause de 1 milliseconde
    }

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    Oula, je crois que tu fais un peu confusion...
    t.Tick est une propriété, donc tu ne peux pas t'abonner à une propriété.
    Une propriété ? Vraiment ? Evénement Timer.Tick

    si tu veux réaliser une fonction tous les ticks, ça va être difficile...
    Il a spécifié un intervalle de 1 seconde (1000 millisecondes) ... on est loin d'un déclenchement à chaque "tick".

    Sinon le code est correct. Je suis aussi étonné que tomlev. Par hasard, tu ne quittes pas l'écran / l'application / ... après avoir démarré le timer ?

  5. #5
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    je n'avais pas lu que c'était la classe timer...

  6. #6
    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 sisqo60 Voir le message
    je n'avais pas lu que c'était la classe timer...
    en même temps, il n'y a pas une seule propriété Tick dans tout le framework

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Salut

    N'aurais tu pas oublié un : t.Start(); ?

  8. #8
    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 theMonz31 Voir le message
    Salut

    N'aurais tu pas oublié un : t.Start(); ?
    encore un qui a lu trop vite

  9. #9
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Citation Envoyé par isoman Voir le message
    Salut a tous,
    j'ai codé un petit timer et je souhaite qu'a chaque "tick" une fonction soit appelé , rien de bien mechant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Timer t = new Timer();
                t.Interval = 1000;
     
                t.Tick += new System.EventHandler(this.t_tick);
     t.Start();
    }
    ....
     private void t_tick(object sender, EventArgs e)
            { 
    .....
    }
    le problème c'est que la methode t_tick n'est jamais appelé .
    Que faire?
    Merci d'avance.

    Timer est une référence ambiguë entre 'System.Windows.Forms.Timer' et 'System.Threading.Timer'.
    Vérifies qu'il n'y ait pas d'ambiguité

  10. #10
    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 StormimOn Voir le message
    Le timer étant lié à un handler par l'événement, il y aura toujours une référence dessus il me semble. Donc même si tu sors du bloc, ça ne doit pas poser de problème.
    Non, c'est le timer qui garde une référence vers le handler...
    Donc effectivement, une fois sorti du scope où il est déclaré, il n'y a plus de référence dessus, donc il sera disposé à un moment ou un autre, mais on sait pas trop quand... C'est sûr qu'il vaudrait mieux le déclarer comme membre de la classe

    Citation Envoyé par sisqo60 Voir le message
    Timer est une référence ambiguë entre 'System.Windows.Forms.Timer' et 'System.Threading.Timer'.
    Vérifies qu'il n'y ait pas d'ambiguité
    Normalement le compilateur aurait râlé s'il y avait une ambigüité...

  11. #11
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Non, c'est le timer qui garde une référence vers le handler...
    Effectivement, j'ai pris dans le mauvais sens =)

  12. #12
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Par défaut
    j'ai essayé de mettre le timer comme variable de classe , sans résultat .
    la méthode t_tick n'est jamais appelé .
    Des suggestions ?

  13. #13
    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 isoman Voir le message
    j'ai essayé de mettre le timer comme variable de classe , sans résultat .
    la méthode t_tick n'est jamais appelé .
    Des suggestions ?
    tu n'as pas répondu à ma question... comment tu sais qu'il n'est jamais appelé ? tu as mis un breakpoint ?

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

Discussions similaires

  1. identifier l'evenement déclencheur d'une fonction
    Par yanice dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2007, 17h33
  2. lier une fonction ecrite en c++ avec une page.NET
    Par tetedeturcq dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/02/2007, 18h04
  3. Réponses: 4
    Dernier message: 01/12/2006, 11h31
  4. lier un bouton et une fonction et JOptionPane
    Par kain_tn dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/05/2006, 21h24
  5. Réponses: 4
    Dernier message: 02/06/2004, 16h35

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