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 Forms Discussion :

[C#] ptite question sur timer


Sujet :

Windows Forms

  1. #1
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut [C#] ptite question sur timer
    Alors voila je voudrais savoir si il est possible d'afficher par exemple sur un
    simple clique bouton la durée restante avant l'éxécution d'un timer.


    j'ai testé timer.interval mais c'a ne semble pas se decrementer


    y aurait-il un autre moyen ???

    Merci d'avance pour vos illuminations

  2. #2
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 125
    Points : 128
    Points
    128
    Par défaut
    essai par example si le délai est de 10 seconde de mettre la prop interval de ton timer sur 1 seconde et décrémenté à chaque evenement du timer une variable intilaisé à 10 et l'affichée comme temps restant jusqu'a 0 est déclanché ensuite l'action
    ce n'est q'un example

  3. #3
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    pour un timer interval defini tous les comien de temps ton timer fait un tick et non le temps restant jusqu'au prochain ticks, pour ta question je penseque l'une des solution est dans l'evenement ticks de mettre une variable:

    lastTick=DateTime.Now;

    puis a chaque fois que tu veux savoir le temps restant tu fait:
    DateTime.Now-lastTick;

  4. #4
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    Merci a vous 2 pour votre reponse cependant je ne comprend pas tres bien le fonctionnement d'un tick.

    voici mon timer :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
            private void Timer1_Elapsed(object sender,System.Timers.ElapsedEventArgs e)
            {
    // milli 2 correspond à 24h en millisecondes
                milli2 = 86400000;
     
                // Récuperation de la date et l'heure du jour
                DateTime dtCurrTime = DateTime.Now;
                string crdate = dtCurrTime.ToShortDateString();
     
     
    // Execution code ...........................................
     
     
     
                // récupération de la date courrante
                DateTime dtCurrTime2 = DateTime.Now;
     
                // conversion date courante au format chaine de caractère STRING
                string heure = dtCurrTime2.ToLongTimeString();
     
                // Parse permet de convertir la variable heure en format DateTime
                DateTime dt1 = new DateTime();
                dt1 = DateTime.Parse(heure);
     
                DateTime dt2 = new DateTime();
                dt2 = DateTime.Parse("23:00:00");
     
                // TIMESPAN permet de soustraire 2 date
                System.TimeSpan de = dt1.Subtract(dt2);
     
                // milli contiendra la difference entre les 2 dates en millisecondes
                string milli = de.TotalMilliseconds.ToString();
                milli2 = int.Parse(milli);
     
                // Toutes les 24H
                int milli3 = 86400000 - milli2;
     
                Timer1.Interval = milli3;
     
     
            }


    voici mon scheduler :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
     
     
               #region Déclaration scheduler
     
     
                // récupération de la date courrante
                DateTime dtCurrTime = DateTime.Now;
     
                // conversion date courante au format chaine de caractère STRING
                string heure = dtCurrTime.ToLongTimeString();
     
                // Parse permet de convertir la variable heure en format DateTime
                DateTime dt1 = new DateTime();
                dt1 = DateTime.Parse(heure);
     
                DateTime dt2 = new DateTime();
                dt2 = DateTime.Parse("23:00:00");
     
                // TIMESPAN permet de soustraire 2 date
                System.TimeSpan de = dt2.Subtract(dt1);
     
                // milli contiendra la difference entre les 2 dates en millisecondes
                string milli = de.TotalMilliseconds.ToString();
                milli2 = int.Parse(milli);
                Timer1.Enabled = true;
                Timer1.Interval = milli2;
     
                Timer1.Elapsed += new System.Timers.ElapsedEventHandler(Timer1_Elapsed);
     
                #endregion

    en faites dans mon appli je veu executer une mise a jour de ma bdd tout les jour a 23h precise.

    donc lors du 1er lancement de mon application
    je parametre timer.interval en fonction de la soustraction entre l'heure de demarrage de l'appli et 23h.
    ex : je lance mon appli à 14h
    je ferai donc 23h - 14h = 9h
    donc mon timer se lancera dan 9h.

    ensuite dan le code de mon timer je recalcul cet interval.
    etant donnée que cette mise à jour peu prendre plusieurs minute, je suis obligé
    de le recalculer tout les soirs sous peine de decalage de mon execution.
    donc lorsque je termine l'execution de ma mise à jour je recupere la date systeme
    et je la soustrait au 23h du lendemain pour recuperé mon nouveau timer.
    exemple :
    lancement à 23h
    durée mise à jour : 10minute.
    recup date courante : 23h10
    timer.interval = 23h - 23h10 = 23h50

    voila j'espere mettre bien exprimé et avoir été assez compris.

    en tout cas merci en encore a vous pour vos aides

  5. #5
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    ok tick signifie le moment precis ou le timer a fini un cycle.
    ps : jai pas bien compris ce que tu demande maitenant en f ait ton probleme a l'air d'etre resolu ???

  6. #6
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    merci Zeavan pour ton aide.
    Bah en faites cette methode marche parfaitement bien cependant, c'a me parrait
    etre plus de la bidouille qu'autre chose
    Je suis persuadé qu'il existe des moyens plus simple d'implementer un timer
    fonctionnel sans passé par ce genre de code

    enfin bon je me contenterai de ca pour le moment.

    en tout cas merci a vous pour votre aide

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

Discussions similaires

  1. Ptite question sur le Profile
    Par lutecefalco dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/07/2007, 13h05
  2. ptite question sur excel
    Par ac/dc dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/05/2007, 16h54
  3. Petite question sur timer
    Par nou366 dans le forum Delphi
    Réponses: 2
    Dernier message: 12/05/2006, 18h50
  4. ptite question sur le fonctionnement du WSDL
    Par Valarauko dans le forum XMLRAD
    Réponses: 4
    Dernier message: 08/02/2005, 16h07
  5. ptite question sur le having
    Par mic79 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/11/2004, 16h43

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