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 :

BackGroundWorker is running


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 56
    Points
    56
    Par défaut BackGroundWorker is running
    Bonjour,

    J'ai un GridView dans lequel je peux avoir plusieurs boutons "Install".
    Le scénario est très simple :

    Dans le cas ou j'ai plus de deux boutons "Install", il y a une forte chance que l'utilisateur clique sur les deux boutons pour aller plus vite.

    J'ai un backgroundworker, enfin ce matin, j'apprends à utiliser un bgw....

    J'ai ajouté un "else" pour informer qu'il y a déjà une installation en cours, mais ce ne fonctionne pas. Enfin, la question est: comment m'assurer qu'il peut y avoir une installation à la fois ?

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (!bgWorker.IsBusy)
    {
          bgWorker.RunWorkerAsync();
          return;
    }
    else
    {
          MessageBox.Show("An installation running...");
    }

  2. #2
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    tu peux faire dans le button_clik
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    button.Enable=false;
    et a la fin de work

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    button.Enable=true;
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Si c'est la même instance de BackgroundWorker que tu utilises alors ce n'est pas normale que ton code ne marche. Vérifies bien l'instance utilisé est le même que l'on passe soit par l'un ou l'autre des deux boutons install.

    Une idée très simple serait de désactiver les deux boutons lorsque l’utilisateur lance l'installation. Dans le gestionnaire d'évènements RunWorkerCompleted tu les réactives.

  4. #4
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    Si c'est la même instance de BackgroundWorker que tu utilises alors ce n'est pas normale que ton code ne marche. Vérifies bien l'instance utilisé est le même que l'on passe soit par l'un ou l'autre des deux boutons install.
    Je ne sais pas, est-ce qu'à chaque fois qu'il y a un clique c'est une nouvelle insarance qui se créer ?

    Une idée très simple serait de désactiver les deux boutons lorsque l’utilisateur lance l'installation. Dans le gestionnaire d'évènements RunWorkerCompleted tu les réactives.
    J'ai pensé à cet astuce et il me semble que c'est la plus simple, comme je crée des boutons dynamiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     DataGridViewButtonCell btCell = new DataGridViewButtonCell();  
     btCell.Tag = CommandLine;
     dataGridView1.Rows[Line].Cells[4] = btCell;                            
     dataGridView1.Rows[Line].Cells[4].Value = "Install";
    Je n'ai pas trouvé la manière de le désactiver
    Merci
    Merci

  5. #5
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DataGridViewButtonCell btCell = new DataGridViewButtonCell(); 
    btCell.Tag = CommandLine;
    btCell.Click -= new EventHandler(btCell_Click);
    dataGridView1.Rows[Line].Cells[4] = btCell; 
    dataGridView1.Rows[Line].Cells[4].Value = "Install";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      void btCell_Click(object sender, EventArgs e)
            {
    btCell.enable=false;
    }

  6. #6
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    Le problème est que btCell n'a pas de propriété Click
    Merci

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    DataGridViewButtonCell n'offre pas de moyen d'activer ou désactiver un bouton.

    Donc l'actuce que j'ai trouvé est la suivante: ce n'est pas élégant, mais quand je serai meilleur je ferai mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DataGridViewTextBoxCell dt = new DataGridViewTextBoxCell();
    dataGridView1.Rows[Line].Cells[4] = dt;
    dt.Value = String.Empty

Discussions similaires

  1. [petites questions][debutant]run et mise en forme
    Par kurgan dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 22/10/2005, 18h40
  2. [Thread]run une fois et plus apres
    Par maxvador dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 29/12/2004, 16h31
  3. [C#] [User] Simulation d'un "Run as"
    Par Vessaz dans le forum Windows Forms
    Réponses: 9
    Dernier message: 16/07/2004, 11h29
  4. [Thread]Faut-il boucler la méthode run ?
    Par Pill_S dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 17/06/2004, 23h53
  5. Réponses: 2
    Dernier message: 05/03/2003, 00h24

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