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 :

Fermeture thread BackgroundWoker


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut Fermeture thread BackgroundWoker
    Bonjour,

    j'utilise des background worker pour éffectuer une recherche et ensuite afficher le résultat dans une datagrid. Chaqueque backgroundWorker appel la fonction AddJob ci dessous pour afficher de nouvelles infos dans ce datagrid.

    Lorsque je fais ma première recherche, ceci se passe bien.

    Lorsque je clique une seconde fois sur le bouton rechercher, j'obtiens le message d’erreur suivant :

    Specified element is already the logical child of another element. Disconnect it first.
    Ceci apparait au niveau de l'utilisation du dispatcher.

    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
     
    /// <summary>
            /// Add a new Jod to the Datagrid
            /// </summary>
            /// <param name="target">Inform the user of the target of this job</param>
            /// <param name="description">Description of the process running</param>
            /// <returns></returns>
            public Job AddJob(string target, string description)
            {
                //Use the dispatcher  cause this function may be called from a thread, therefore it has to be executed in the Main UI thread
                //If no dispatcher = exception
                    Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal,
                    new Action(
                          delegate()
                          {
                              iJobInstanceID += 1;
                              _ocJobs.Add(new Job(iJobInstanceID, target, description));
                          }
                    ));
     
                return _ocJobs.Last();
            }
            }
    Je suppose que cette erreur vient d'un thread mal "fermé" ? mais je n'arrive pas à voir comment m'assurer que tout les thread utilisées soient correctement détruits à la fin.

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Il me semble que c'est une erreur WPF. Tu changes des contrôle via code à un moment donné ?

Discussions similaires

  1. Fermeture Thread propre
    Par skrface dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 25/04/2013, 23h13
  2. [Threads] Fermeture threads non démons
    Par if_zen dans le forum Général Java
    Réponses: 1
    Dernier message: 07/01/2010, 16h22
  3. [C#] - Problème sur fermeture d'un thread
    Par Erakis dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/01/2006, 01h22
  4. Probleme fermeture Thread
    Par Raton dans le forum MFC
    Réponses: 4
    Dernier message: 29/09/2005, 09h51
  5. [Thread][socket]Problème de fermeture d'un thread
    Par meda dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 04/11/2004, 01h03

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