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 :

Comment mettre a 0 une progressbar d'un thread avec un bouton annuler [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Par défaut Comment mettre a 0 une progressbar d'un thread avec un bouton annuler
    Bonjour à tous,

    J'aimerais arrêter une progressbar qui est alimenté depuis un thread, mais le problème c'est que, quand j'arrête ce thread avec un booléen enfin ce n'est pas trop le problème, la progressbar s'arrête et se remet à 0 une fraction de seconde puis revient a son état d'origine c'est-à-dire celui avant que j'appuis sur le bouton et reste bloqué. Quand je rappuis sur le bouton annuler il se remet bien à 0 et y reste.

    Je voudrais réinitialisé la progressbar à 0 sans qu'elle ne redémarre a son état d'origine et sans appuyer 2 fois sur le bouton annuler.

    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
    private void Button_anuler_Click(object sender, EventArgs e)
            {
                try
                {
     
                    //MessageBox.Show(progress_bar.Value.ToString());      "c'était pour vérifier la valeur est elle est bien égal a 0
                    // remplace les valeurs afficher par rien.
                   // progress_bar.Value = 0;
                    threadstart = false;
                    // On cache le message de reussite.
                    lab_complete.Hide();
                    // On dévérouiille les champs de saisis et le boutton ok.
                    temps.Enabled = true;
                    text_mail.Enabled = true;
                    button1.Enabled = true;
                    // Tue le process en cours en tache de fond (powershell).
                    Process[] processList = Process.GetProcessesByName("powershell");
                    foreach (Process p in processList)
                    {
                        p.Kill();
                    }
                    // remplace les valeurs afficher par rien.
                    progress_bar.Value = 0;                                " j'ai remis la valeur à 0 à la fin mais rien ne change.
     
                }
                catch (Exception ex)
                {
                    // On affiche un message d'erreur suivant l'erreur "ex".
                    MessageBox.Show("Une erreur s'est produite " + ex);
                }
            }
    Voila mon code en espérant que quelqu'un puisse m'aider
    Merci d'avance !

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je suppose qu'a la ligne 24 de ton code ton thread n'est pas encore stoppé.
    Tu devrait peut être ajouter une attente de fermeture de ton thread via Join

    Si c'est le thread qui gère la barre de progression c'est peut être mieux que ce soit lui qui la réinitialise.
    Essaie d'utiliser Abord pour signaler au thread que tu souhaite un arrêt. Suivi d'un Join comme dans l'exemple.

    Dans le thread tu attrape cette exception et tu fait le nécessaire.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Abort c'est quand on ne peut pas faire autrement, le mieux est que ton bouton cancel lève un flag et que ton thread surveille ce flag (ça doit déjà être le cas) et que ton thread mette le progressbar à 0
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Par défaut
    Bonjour à tous,

    Merci pour vos réponse, j'ai compris du coup que c'étais au Thread de réinitialiser la progressbar
    Du coup j'ai utiliser le booléen qui arrête mon thread pour faire une condition dans le thread du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
             if (threadstart == false)
                            {
                                progress_bar.Value = 0;
                            }
    Cela fonctionne très bien et me convient pour ce que je fais sur mon application.
    Merci pour votre temps en tous cas.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/09/2006, 15h36
  2. Réponses: 7
    Dernier message: 06/07/2006, 22h33
  3. Réponses: 2
    Dernier message: 02/05/2006, 09h50
  4. [VB]Comment mettre en forme une grille de données
    Par CBleu dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/02/2006, 09h58
  5. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01

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