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

iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 14 janv. 2007 à 14:17
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 15 janv. 2007 à 20:35
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 janv. 2007 à 14:34
Salut,

Comment fait tu l'appel à Invoke ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
14 janv. 2007 à 14:55
Merci de ta reponse.

Voici comment je fais l'appel :

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