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 :

Timer avec un paramètre description


Sujet :

C#

  1. #1
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut Timer avec un paramètre description
    Bonjour tout le monde,

    J'avais semble-t-il une erreur dans un timer, et le compilateur m'a proposé de corriger les erreurs. C'est depuis que je ne comprends rien.

    En effet, j'avais comme signature de timer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timer2_Tick(object sender, EventArgs() e);
    et le compilateur a trouvé que ça serait mieux d'ajouter un deuxième timer avec la signature

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timer2_Tick(object sender, EventArgs()e, int v)
    Les messages du compilateur appellent ce paramètre v "description".

    L'ennui est que je ne réussis pas à trouver une documentation d'événement timer qui reçoive trois arguments, et encore moins ce qu'il faut passer au troisième argument.

    Ce qui fait ... une histoire de timer qui dure, puisque là j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	CS7036	Parmi les arguments spécifiés, aucun ne correspond au paramètre obligatoire 'v' de 'Form1.timer2_Tick(object, EventArgs, int)'
    Quelqu'un en sait-il plus ?

    On dirait que je devrais faire une pause : j'ai corrigé trois fois mon message pour enlever le s en trop à "troisième argument", et il est toujours là. Ah non tiens, maintenant que je parle de lui il veut bien s'en aller. Une question de coquetterie peut-être.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 123
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 123
    Points : 1 630
    Points
    1 630
    Par défaut
    retire aussi les parenthèses à EventArgs, elle n'ont rien à faire là => timer2_Tick(object sender, EventArgs e);

  3. #3
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    OK, merci.
    J'ai mis ça de mémoire dans le forum, mais je fais confiance à Visual Studio pour me jeter si ma syntaxe n'est pas bonne.

    En revanche le coup de la deuxième procédure événementielle avec un paramètre de plus, je dois avouer que ça me laisse coi.
    Si tu avais une idée de comment rédiger la requête pour les moteurs ...
    Les idées qui me sont passées par la tête n'ont pas eu trop de succès.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 123
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 123
    Points : 1 630
    Points
    1 630
    Par défaut
    Citation Envoyé par Gluups Voir le message
    En revanche le coup de la deuxième procédure événementielle avec un paramètre de plus, je dois avouer que ça me laisse coi.
    Il n'y en a pas de procédure avec un 3ème paramètre
    Au mieux (si ça veut passer), si tu veux un autre paramètre, il faudrait lui spécifier une valeur par défaut

    Si tu avais une idée de comment rédiger la requête pour les moteurs ...
    Il faudrait déjà savoir de quoi tu parles ....

  5. #5
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    L'explication serait donc que l'intelligence artificielle de Visual Studio se met à déconner ?
    Ça se tient, mais c'est regrettable.

  6. #6
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    Citation Envoyé par umfred Voir le message
    Il faudrait déjà savoir de quoi tu parles ....
    J'aurais dû me méfier qu'il n'y aurait pas que moi à ne pas connaître, et prendre plus de notes.
    Bon, il va me rester à rétropédaler ...

    Tiens j'ai un autre souci là-dessus.
    J'avais une application qui tournait impec, et puis quand j'ai voulu ajouter quelque chose j'ai dû me mélanger les pinceaux, là je me suis dit heureusement qu'il y a le contrôle de version. J'avais une version de quelques jours plus tôt, opérationnelle.

    Sauf que voilà, version invalide, et toutes les sauvegardes dans le contrôle de gestion sont comme ça, plus qu'à (presque) tout refaire, je suis ramené un an en arrière. Ah ou alors sur la sauvegarde du disque il faudrait que je regarde ; mais elle n'est pas si récente que ça.

    Ça t'est déjà arrivé ce genre de bricole ?

    Ça me rappelle Windows qui par défaut n'active les points de restauration qu'une fois que c'est trop tard.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 123
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 123
    Points : 1 630
    Points
    1 630
    Par défaut
    Citation Envoyé par Gluups Voir le message
    L'explication serait donc que l'intelligence artificielle de Visual Studio se met à déconner ?
    Ça se tient, mais c'est regrettable.
    ah, il y a de l'intelligene artificlelle ? je croyais que c'était IntelliSense, ce n'est pas vraiment de l'IA (à mon sens). Et il n'a pas toujours raison, même si ça aide souvent).

    Côté versioning, je ne suis pas un bon élève. J'ai tendance à faire une sauvegarde du projet qui fonctionne à côté du projet en cours de dev.


    Sinon tu parlais de "requêtes vers les moteurs". quels moteurs ? peut-être parlais-tu des moteurs de recherche pour trouver une réponse à ta questions, mais alors quelle est ta vraie question ? puisque qu'il y a aucune fonction évènementielle timer.tick avec 3 paramètres.
    déclarer une fonction avec le mot tick dedans ne présage pas qu'elle est liée à un événement tick de timer.

  8. #8
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    Oh, mais si c'est moi qui l'ai inventé, ça devait être "de la bonne".
    Je pense que je devrais avoir plus de souvenirs d'éléphants roses.
    Et je ne crois pas que ce soit l'Intellisense qui te propose de sortir une deuxième procédure avec un argument de plus ...

  9. #9
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    Alors, voilà où j'en suis.
    Le compilateur m'a signalé une erreur sur timer2, et m'a proposé de la corriger.
    Depuis cette correction, timer2 ne fonctionne que si, en plus de l'implémentation avec deux arguments Object et EventArgs, que nous connaissons, il y a aussi une autre avec trois arguments, de types Object, EventArgs, et int ; il n'y a pas nécessité qu'il y ait du code dedans, c'est la version avec deux arguments qui contient le code.
    Le projet contient aussi un autre timer, timer1, qui n'a pas été affecté par la correction, et qui dans un premier temps continuait de fonctionner.
    À présent, j'ai probablement dû changer autre chose, toujours est-il que timer1 ne fonctionne pas non plus. Je peux appeler son code, mais il ne se réexécute pas périodiquement.

    Donc, le projet reconnaît à présent un autre type de timer, et faute de documentation sur celui-ci je ne sais pas m'en servir.
    J'ai mis tout ça dans un répertoire "timers en vrac", je l'ai remplacé par une sauvegarde de l'année dernière, et ça marche impec. J'ai perdu les fonctionnalités que j'ai développées dans l'intervalle, bien entendu, mais je pars sur une base saine et connue.

    On dirait qu'il va falloir guetter les infos sur Timer, histoire de se mettre à la page. D'ailleurs, en faisant une recherche dessus, j'ai vu qu'il y a System.Windows.Forms.Timer, celui que j'utilise, et System.Timers.Timer, dont l'événement de déclenchement ne s'appelle pas Tick, mais Elapsed.

    Et j'ai l'impression que je serais bien inspiré de m'offrir une piqûre de rappel sur Git, des fois que j'aie fait un truc qui ne lui a pas plu.

    À côté de ça il y a une autre question que je suis amené à me poser, c'est combien de temps je dois laisser mon disque externe bavarder. Je ne le branche pas très souvent, il a dû être un peu trop bougé, et là il est en train de compter ses petits.

  10. #10
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Il existe plusieurs implémentations de Timer en standard. Par contre, elles ont toutes en commun de ne prendre que 2 arguments, comme toutes méthodes correspondants à un événement : la source (le premier paramètre), et les paramètres (le second).

    Es-tu sûr que le Timer utilisé correspond à un timer fourni en standard, et non pas à une implémentation locale ? Je parle bien du timer, pas du callback appelé lorsque le temps est écoulé. Car là, je parierai plutôt pour un timer "maison", dont la signature de l'événement ne respecte pas les conventions.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  11. #11
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    Bonjour,

    C'est peut-être un timer "maison", mais alors la maison est Microsoft.
    Honnêtement, je n'avais encore jamais vu de Timer avec trois arguments non plus.
    D'habitude, quand le compilateur propose des modifications (pas toujours de façon lisible sur toutes les configurations d'écran mais c'est une autre affaire), ce sont des modifications judicieuses.

    Une explication possible est qu'ils ont en projet une nouvelle implémentation des timers, et qu'ils l'ont mise en avant par les propositions du compilateur, avant de la documenter auprès des développeurs. L'inconvénient de la démarche est que ce n'est pas facile à suivre.
    Au début ça marchait, mais comme je n'avais pas la doc, dès que j'ai bougé le petit doigt là-dessus j'ai tout cassé.
    Et revenir en arrière n'est possible qu'un certain temps, à condition de ne pas avoir fermé Visual Studio. Ou alors il faut un contrôle de version opérationnel, et là j'ai eu une sale surprise. Je suppose d'ailleurs qu'avant d'inscrire ma restauration de sauvegarde dans le contrôle de versions, j'ai intérêt à renommer l'ancien dépôt, ou ça faire un fichu mélange.

  12. #12
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Es-tu sûr à 100% de ne pas avoir un timer autre ? Genre à cause d'un using par exemple ?

    Honnêtement, je vois mal Microsoft s'amuser à faire un timer avec 3 paramètres, alors que TOUS les événements qu'ils ont, que ce soit du timer ou non, suive la même logique : 2 paramètres, 1 pour la source, 1 autre pour les paramètres.

    Regarde où est utilisé le timer2_Tick et à quel type d'objet il est rajouté.

    Sinon, il faut un exemple de code plus complet, ou si possible, un exemple de projet minimaliste reproduisant le souci. Parce que là, on navigue complètement à l'aveugle !

    Je ne dis pas que Visual Studio est exempt de bogue. Je dis seulement que la plupart sont en réalité entre la chaise et le clavier (quasiment à chaque fois que j'ai cru à un bogue de mon côté, le souci était en réalité... moi ! Quasiment car une fois, il s'agissait bel et bien d'un bogue dans Visual Studio...).
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 123
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 123
    Points : 1 630
    Points
    1 630
    Par défaut
    Pour moi, si il te propose d'ajouter une déclaration avec 3 paramètres, c'est que quelque part tu lui en passes 3, et c'est là ton erreur.

  14. #14
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    Citation Envoyé par umfred Voir le message
    Pour moi, si il te propose d'ajouter une déclaration avec 3 paramètres, c'est que quelque part tu lui en passes 3, et c'est là ton erreur.
    Ah non je ne passe rien du tout, moi.
    Pour moi, un timer ça marche avec un délai, et accessoirement on lui passe un objet émetteur, et puis c'est tout.
    D'ailleurs, si il y a deux paramètres, je ne vois pas bien comment je peux en passer trois. Sauf si l'un des paramètres est un tableau ou une collection, à la rigueur.

    Ah tiens ça y est, j'ai presque fini de remettre mon application à jour, c'est pourtant vrai que ma machine a trois mois, ça aurait été fortiche que la sauvegarde ait un an.
    Plus qu'à ajouter un paramètre booléen à la fonction qui envoie une touche entrée pour le plein écran. D'ailleurs, ça serait pratique que IrfanView ait un support de DDE ou Automation, la simulation de touche ça a ses limites.

  15. #15
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    Citation Envoyé par François DORIN Voir le message
    Es-tu sûr à 100% de ne pas avoir un timer autre ? Genre à cause d'un using par exemple ?

    Honnêtement, je vois mal Microsoft s'amuser à faire un timer avec 3 paramètres, alors que TOUS les événements qu'ils ont, que ce soit du timer ou non, suive la même logique : 2 paramètres, 1 pour la source, 1 autre pour les paramètres.
    Enfin presque. Je ne me rappelle pas avoir vu un objet TimerEventArgs, dans lequel on renseignerait e.Delay, et dont on pourrait sortir une nouvelle version pour pouvoir renseigner e.Description. Qui sait ça pourrait avoir un intérêt, pour uniformiser le code. Mais pour le moment je les ai plus vus occupés à sortir régulièrement une nouvelle plateforme qui met tout à plat, c'est plutôt la direction inverse.

    Regarde où est utilisé le timer2_Tick et à quel type d'objet il est rajouté.

    Sinon, il faut un exemple de code plus complet, ou si possible, un exemple de projet minimaliste reproduisant le souci. Parce que là, on navigue complètement à l'aveugle !

    Je ne dis pas que Visual Studio est exempt de bogue. Je dis seulement que la plupart sont en réalité entre la chaise et le clavier (quasiment à chaque fois que j'ai cru à un bogue de mon côté, le souci était en réalité... moi ! Quasiment car une fois, il s'agissait bel et bien d'un bogue dans Visual Studio...).
    Oui nous sommes d'accord, j'aurais dû prendre plus de notes, j'ai décrit ce que j'ai vu mais manifestement ce n'est pas suffisant.

    J'en garde comme enseignement qu'avant d'accepter une correction automatique de Visual Studio il est prudent de protéger ses arrières.
    Par exemple, une copie du code avant, et si ça coince une copie après. Ne serait-ce que pour pouvoir répondre aux questions

  16. #16
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 123
    Points : 2 235
    Points
    2 235
    Par défaut
    J'ai voulu faire un ajout en modifiant un message, mais apparemment c'est trop tard pour ça.

    Avant la modification proposée par le compilateur, j'avais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void timer2_Tick(object sender, EventArgs e)
    {
      // mon code ici
    }
    Et après la modification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void timer2_Tick(object sender, EventArgs e)
    {
      // mon code ici
    }
     
    private void timer2_Tick(object sender, EventArgs e, int v)
    {
    }
    En faisant une sauvegarde j'ai revu le répertoire "timers en vrac", alors je me suis dit "ah ben oui c'est ça qu'on cherchait."

  17. #17
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    C'est surtout l'endroit où est utilisé cette méthode qui est intéressant, pas sa définition en tant que tel

    Parce que si il t'a proposer d'en créer une autre, avec 3 paramètres, c'est qu'il y a un événement qui s'attend à avoir 3 paramètres...
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 123
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 123
    Points : 1 630
    Points
    1 630
    Par défaut
    c'est ce que j'avais déjà évoqué en réponse #13, mais bon il dit qu'il ne passe rien à la fonction ...

Discussions similaires

  1. [Débutant] Pb avec les paramètres dans lien dynamique
    Par hackwell69 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/02/2005, 11h33
  2. [ADO/Access] Appel d’une requête avec des paramètres
    Par Taxenna dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/12/2004, 14h58
  3. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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