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 Toujour Occupé ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    rien
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut BackgroundWorker Toujour Occupé ?
    Bonjour ,

    Je veux donc lancé mon background worker

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                if (bw.IsBusy != true)
                {
                  bw.RunWorkerAsync();
                }
    rien ne se passé , donc j'ai enlevé le if pour voir qu'est-ce qui se passé et donc j'obtient bien que le backgroundworker est occupé (bw.IsBusy different true)

    Mais pourquoi ? Ce n'est pas le premier , sur d'autre application j'ai déjà utilisé ceci c'est la première fois j'ai ça pourtant je recopie ma fonction sur un logiciel qui fonctionne ça veut rien savoir.

    Au dessus de InitializeComponent j'ai mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                bw.WorkerReportsProgress = true;
                bw.WorkerSupportsCancellation = true;
                bw.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
    Et en en-tête ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private BackgroundWorker bw = new BackgroundWorker();
    Merci de m'éclairé aprés 3heures passé a le faire fonctionné j'vais devenir fou

  2. #2
    Membre Expert
    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
    Par défaut
    tu peux ne donner la définition de backgroundWorker1_DoWork?

  3. #3
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Le code du traitement que tu fais serait intéressant. Peut-être une boucle infinie ou une ressource bloquée ?
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  4. #4
    Membre averti
    Homme Profil pro
    rien
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut
    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
            private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                BackgroundWorker worker = sender as BackgroundWorker;
                for (int i = 1; (i <= 10); i++)
                {
                    if ((worker.CancellationPending == true))
                    {
                        e.Cancel = true;
                        break;
                    }
                    else
                    {
                        // Mes Functions ICI
                        worker.ReportProgress((i * 10));
                    }
                }
            }
    Je comprend pas sérieux

  5. #5
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Alors la je ne comprend pas du tout ce que vous faites.

    Dans la fonction d traitement d'un "backgroundWorker1",

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    vous déclarez un autre BackGroundWorker. Ensuite vous avez le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                   if ((worker.CancellationPending == true))
                    {
                        e.Cancel = true;
                        break;
                    }
                    else
                    {
                        // Mes Functions ICI
                        worker.ReportProgress((i * 10));
                    }
    mais qui travaille sur le worker déclaré dans la cette même fonction. Pour ce "worker" je ne vois nulle part l'initialisation des différents callback dont celui de traitement DoWork. De plus vous faites appel à la fonction "ReportProgress" mais encore une fois sur ce worker instancié mais pas lancé.

    Donc déjà pour moi ce devrait plutôt être un truc du genre

    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
     
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                for (int i = 1; (i <= 10); i++)
                {
                    if (( bw.CancellationPending == true))
                    {
                        e.Cancel = true;
                        break;
                    }
                    else
                    {
                        // Mes Functions ICI
                         bw.ReportProgress((i * 10));
                    }
                }
            }
    Attention j'ai pas testé mais cela me semble plus logique.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  6. #6
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Voyez peut-être avec cet exemple que j'ai mis à disposition de la communauté montrant les grandes lignes du backgroundWorker

    http://dotnet.developpez.com/telecha...ckgroundWorker
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/06/2004, 09h29
  2. [connexion][CVS] Toujours mon probleme de connexion
    Par Gromitou dans le forum JBuilder
    Réponses: 11
    Dernier message: 07/11/2003, 18h41
  3. Réponses: 4
    Dernier message: 12/06/2003, 21h42
  4. [Kylix] Le son ! toujours le son :lol:
    Par JlouisI dans le forum EDI
    Réponses: 1
    Dernier message: 29/04/2003, 01h24
  5. Toujours un problème de rafraichissement de DBGrid
    Par tripper.dim dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/12/2002, 13h15

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