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 :

problème avec BackgroundWorker [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué Avatar de SIMS
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut problème avec BackgroundWorker
    Bonjour,

    faut-il systématiquement placer "BackgroundWorker.Dispose()" dans "backgroundWorker1_RunWorkerCompleted" pour décharger le thread ?

    j'ai une erreur aléatoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    L'exception DisconnectedContext s'est produite
    Message: L'Assistant Débogage managé 'DisconnectedContext' a détecté un problème dans 'D:\Rep Appli\bin\Debug\Appli.vshost.exe'.
    Informations supplémentaires*: Échec de la transition vers le contexte COM 0x1a9f1938 pour ce RuntimeCallableWrapper 
    avec l'erreur suivante : L’objet invoqué s’est déconnecté de ses clients. (Exception de HRESULT : 0x80010108 (RPC_E_DISCONNECTED)). 
    Cela se produit habituellement car le contexte COM 0x1a9f1938 dans lequel ce RuntimeCallableWrapper a été créé a été déconnecté 
    ou est occupé à autre chose. Libération des interfaces du contexte COM actuel (contexte COM 0x1a9f0ed0). 
    Cela peut entraîner des dysfonctionnements ou des pertes de données. Pour éviter ce problème, 
    assurez-vous que tous les contextes/cloisonnements/threads COM restent actifs et sont disponibles pour la transition des contextes, 
    tant que l'application n'en a pas terminé avec les RuntimeCallableWrappers qui représentent les composants COM qui s'y trouvent.
    Impossible d'intercepter l'erreur en mode débugg.

    Comme je commence juste a code en c# j'ai un peu de mal ...
    Si quelqu'un pouvait m'aider

  2. #2
    Membre chevronné 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
    Par défaut
    Salut ,

    Peux tu nous montrer comment ton code ou tu déclare ton BackgroundWorker et ces evenements attachés ?

  3. #3
    Membre habitué Avatar de SIMS
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
           public void GenererRapport()
            {
                progressBar1.MarqueeAnimationSpeed = 30;
                progressBar1.Style = ProgressBarStyle.Marquee;
     
                backgroundWorker1.RunWorkerAsync("RapportCS");
     
                while (backgroundWorker1.IsBusy)
                    {
                        Application.DoEvents();
                    }
    ....
     
     
          private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                switch (e.Argument.ToString())
                {
                    case "RapportCS":
     
                          Traitement .....
                }
            }
     
     
           private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
            {
            }
     
     
            private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
            }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Non, pas besoin de disposer le BackgroundWorker. D'une manière générale, il ne faut disposer que les objets que tu crées toi-même. Là c'est le designer qui a créé le BackgroundWorker (je suppose), donc c'est lui que le disposera en même temps que le reste de la Form.

    A priori le problème est plutôt lié à la mauvaise manipulation de composants COM

  5. #5
    Membre habitué Avatar de SIMS
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut
    Quand tu dis "mauvaise manipulation composant COM" comment je peux trouver le code qui génère cette erreur ou est ce qu'il y a du code associé ?
    J'ai essayé de mettre des Try catch un peu partout mais sans succès...

  6. #6
    Membre chevronné 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
    Par défaut
    Question toute bête : Tu as pensé à abonner ton bw aux evenenements do_work et work_completed ?

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

Discussions similaires

  1. Backgroundworker problème avec l’évènement Progresschanged
    Par Aeronia dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/11/2011, 08h40
  2. Réponses: 4
    Dernier message: 16/10/2008, 09h48
  3. Problème avec BackgroundWorker
    Par supasonic77 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/06/2007, 11h40
  4. [C# THREADS]problème avec backgroundworker
    Par sarapis dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/04/2007, 11h58
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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