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 :

Thread.Sleep qui n'attend pas comme je veux


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut Thread.Sleep qui n'attend pas comme je veux
    Bonjour,

    J'ai un petit bout de code tout simple.

    L'utilisateur clique sur le bouton sauvegarder, la sauvegarde se fait, un label "sauvegarde effectuée" devient visible puis le thread attend 1,5 seconde et le label redevient invisible.

    En faite il attend bien, car le bouton devient figé pendant ce temps, mais je ne vois pas mon label.

    Bizarre vu que lorsque je le met en visible simplement, ça marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void Bt_SavaChx_Click(object sender, EventArgs e)
            {
                string sql = "ModifierParametre 'AjoutAutoUser','" + Convert.ToString(Chx_AjoutAutoUser.Checked) + "'";
                SqlConnection ConsultConnection = new SqlConnection(oSurveillant.strConnexionSecurite);
                SqlCommand Command = new SqlCommand(sql, ConsultConnection);
     
                Command.Connection.Open();
                Command.ExecuteNonQuery();
                Command.Connection.Close();
                SauvegardeEffectuee.Visible = true;
                Thread.Sleep(1500);//attendre 1,5 seconde
                SauvegardeEffectuee.Visible = false;
            }
    Merci d'avance

  2. #2
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Citation Envoyé par Chacha35 Voir le message
    Bizarre vu que lorsque je le met en visible simplement, ça marche.
    Tu veux dire par là que tu enlève le Thread.Sleep et que tu ne repasse pas la propriété Vissible du label à false ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut
    Oui c'est ça. C'est juste pour dire qu'il n'y à pas de problème pour mettre mon label en visible.

    S'il y a une autre solution pour que on label s'affiche juste une seconde ou deux, je suis ouverte à tout!

    Je veux que mon label s'affiche quelques instant car s'il l'utilisateur refait un changement juste après, il ne faut plus lui afficher que c'est sauvegardé : logique.

    Tiens je pense à un truc : est-ce que l'on peut détecter le clique de l'utilisateur même dans le vide. Comme ça je pourrai mettre mon label invisible à ce moment là.

    Ba oui, MouseClick.

    Je vais tenter ça, mais j'aurai bien aimé comprendre le problème du sleep !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Sinon tu peux utiliser un Timer.

  5. #5
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Le problème qu'il y a c'est que Thread.Sleep va mettre en pause le thread de l'application, donc forcément ça freeze l'interface graphique et on ne peux pas voir le label.

    Il vaudrait mieux passer par un Timer par exemple, ou effectivement prendre le clic de la souris sur un élément.
    Par contre, je ne vois pas comment l'utilisateur ferait pour cliquer dans le vide, techniquement c'est pas possible
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  6. #6
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut
    Timer ça à l'air pas mal!

    "Dans le vide" :façon de parler biensûr!

    Merci pour vos réponse.

  7. #7
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut
    C'est bon ça marche !

    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
     
            private void Bt_SavaChx_Click(object sender, EventArgs e)
            {
                string sql = "ModifierParametre 'AjoutAutoUser','" + Convert.ToString(Chx_AjoutAutoUser.Checked) + "'";
                SqlConnection ConsultConnection = new SqlConnection(oSurveillant.strConnexionSecurite);
                SqlCommand Command = new SqlCommand(sql, ConsultConnection);
     
                Command.Connection.Open();
                Command.ExecuteNonQuery();
                Command.Connection.Close();
                SauvegardeEffectuee.Visible = true;
                Timer.Enabled = true;   
            }
     
            private void Timer_Tick(object sender, EventArgs e)
            {
                SauvegardeEffectuee.Visible = false;
                Timer.Stop();
            }

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

Discussions similaires

  1. [MySQL] Un formulaire qui ne fonctionne pas comme il faut (problèmes avec stripslashes & com)
    Par vincent.b dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/04/2007, 20h02
  2. requete qui ne fonctionne pas comme je shouterais
    Par domino_dj dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/04/2007, 12h27
  3. Réponses: 1
    Dernier message: 10/02/2007, 01h09
  4. un if qui ne fonctionne pas comme je veux
    Par Kelly182 dans le forum Access
    Réponses: 4
    Dernier message: 27/07/2006, 15h12
  5. [Tableaux] boucle while qui ne boucle pas comme je veux
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 00h42

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