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 :

Un délai en C# ? [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Un délai en C# ?
    Bonjour,

    Je voudrais créer un délai avant d'exécuter une instruction en C#. Je travail sur deux forms, et avant que la deuxième form apparaisse, je voudrais créer un délai (entre 3 et 5 secondes).

    Voici mon code :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    /*
     * ---------------------------------
     * Auteur : SmashScharrer
     * Date : 10/12/2018
     * ---------------------------------
     * V1.0 : Connexion BDD avec C#
     * 
     * ---------------------------------
     * 
     */
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using MySql.Data.MySqlClient;
    using System.Threading;
     
    namespace BDD_MySQL
    {
        public partial class Form1 : Form
        {
            /* Variables */
            string server, database, user, pwd, chaineConnexion;
            Form1 index = new Form1();
            Form2 requete = new Form2();
            MySqlConnection connexion;
            Thread thead1 = new Thread();
     
            private void FormLoad(object sender, EventArgs e)
            {
                // Affichage TextBox Résultat
                tbResultat.Text = "Saisissez les informations de connexion à la BDD : ";
                tbResultat.BackColor = Color.Orange;
     
                // Affichage TextBox de Connexion
                tbServer.Text = "";
                tbDatabase.Text = "";
                tbUser.Text = "";
                tbPWD.Text = "";
            }
     
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            /* Préambule */
     
            /* Connexion BDD en Procédurale */
            private void bConnexion(object sender, EventArgs e)
            {
                // Affectation chaine de caractère des TextBox
                server = tbServer.Text;
                database = tbDatabase.Text;
                user = tbUser.Text;
                pwd = tbPWD.Text;
     
                // Chaîne de connexion
                chaineConnexion = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + user + ";" + "PASSWORD=" + pwd + ";";
     
                // Si Tentative de Connexion 
                if (btnConnexion.Text == "Connexion")
                {
                    connexion = new MySqlConnection(chaineConnexion);
                    // Si Connxion réussie
                    try
                    {
                        connexion.Open();
                        btnConnexion.Text = "Déconnexion";
                        tbResultat.Text = "Connexion à la BDD réussie !";
                        tbResultat.BackColor = Color.Green;
                        Thread
     
                        requete.Show();
                        index.Hide();
                    }
                    // Sinon si Connexion échouée
                    catch(Exception ex)
                    {
                        tbResultat.Text = "Erreur : " + ex.ToString();
                        tbResultat.BackColor = Color.Red;
                    }
                }
                // Sinon
                else
                {
                    try
                    {
                        connexion.Close();
                        btnConnexion.Text = "Connexion";
                        tbResultat.Text = "Saisissez les informations de connexion à la BDD : ";
                        tbResultat.BackColor = Color.Orange;
                    }
                    catch(Exception ex)
                    {
                        tbResultat.Text = "Erreur : " + ex.ToString();
                        tbResultat.BackColor = Color.Red;
                    }
                }
            }
        }
    }
    Merci beaucoup et bonne soirée !

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour ,

    Il y a la méthode Thread.Sleep() qui permet de faire une 'pause' dans le programme, attention tout de fois cela agit sur le thread principal ce qui empêchera toute action utilisateur lors de ce laps de temps.

    Pour ne pas bloquer le thread principal, se tourner vers Task.Delay().

    Bon code.
    throw new NoSignatureException();

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Je pense qu'il nous faudrait quelques informations de plus sur ce que tu cherches à faire. Comme le précise WaterTwelve21 Thread.Sleep() va bloquer ton interface pendant le temps de pause, ce qui n'est probablement pas ce que tu souhaites. Et Task.Delay() implique de faire de l'asynchrone, donc il faut que tu comprennes aussi ce vers quoi tu te diriges.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Noxen Voir le message
    Je pense qu'il nous faudrait quelques informations de plus sur ce que tu cherches à faire. Comme le précise WaterTwelve21 Thread.Sleep() va bloquer ton interface pendant le temps de pause, ce qui n'est probablement pas ce que tu souhaites. Et Task.Delay() implique de faire de l'asynchrone, donc il faut que tu comprennes aussi ce vers quoi tu te diriges.
    En fait j'ai deux forms. Mon prmeier form qui st "une page d'accueil de connexion", et un deuxième. Je voudrais juste, si l'utilisateur établit une connexion (authentification réussie, par exemple) juste mettre un temps d'attente, de quelques secondes, avant de faire apparaitre mon deuxièeme forms.

  5. #5
    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 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Dans ce cas, le plus simple est d'utiliser async/await :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private async void bConnexion(object sender, EventArgs e) 
    {
       ...
       await Task.Delay(5000); // Délai de 5 secondes
       ...
    }

    Le thread principal ne sera pas bloqué, et donc l'UI non figé.
    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

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Désolé de l'attente ! Merci beaucoup problème régler 😉

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

Discussions similaires

  1. Délai d'expiration des cookies
    Par Sylvain James dans le forum XMLRAD
    Réponses: 40
    Dernier message: 22/03/2006, 10h22
  2. expiration du délai pour une page
    Par yahia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 21/06/2004, 12h03
  3. Connexion ADO et SQL Server : délai d'execution expiré.
    Par denrette dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/02/2004, 09h00
  4. [CDD] Renouvellement Délai de carence
    Par seb.49 dans le forum Droit du travail
    Réponses: 4
    Dernier message: 11/02/2004, 08h32
  5. Délai d'attente expiré
    Par amiral thrawn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/04/2003, 12h04

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