[.NET2] Probleme de copie d'un objet entre thread

Signaler
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
-
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
-
Bonjour,

Je developpe actuellement une application multi-thread avec des délégués asynchrone. La fonction attachée au délégués prend en parametre un listViewItem qu'il doit ajouter à une listView present sur le thread principal. Le probleme c'est que je ne peux pas stocker le parametre dans un ListViewGroup : j'ai une exeption.

Voici la fonction attachée à mon délégué :

private void MlistResultAddItem(ListViewItem item)
        {
            listResult.Items.Add(item);
            lvi.Items.Add(item);
        }

La 4émes ligne me genere une exeption :

L'exception System.NullReferenceException n'a pas été gérée
  Message="La référence d'objet n'est pas définie à une instance d'un objet."
  Source="System.Windows.Forms"
  StackTrace:
       à System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
       à System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
       à MsnPasswordCracking.Form1.go(Object arg) dans C:\Documents and Settings\thom\Mes documents\Visual Studio 2005\Projects\MsnPasswordCracking\MsnPasswordCracking\Form1.cs:ligne 189
       à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       à System.Threading.ThreadHelper.ThreadStart(Object obj)

J'ai essayé de cloner l'item reçu en parametre dans la fonction du délegué : ça marche pas.
Merci d'avance pour votre aide

3 réponses

Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
80
Salut,

Comment fait tu l'appel à Invoke ?

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
Merci de ta reponse.

Voici comment je fais l'appel :

this.Invoke(new listResultAddItem(MlistResultAddItem), item);// ajoute dans la listView
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
Je precise que j'ai essayé de cloner l'objet avec la methode : clone()