[.NET2] Passage d'argument à un thread

Résolu
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 31 déc. 2006 à 21:27
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 1 janv. 2007 à 14:10
Bonjour,

Tout d'abord je vous souhaite à tous une exelence année 2007.
J'ai un Thread principal qui dois lancer un thread secondaire avec un parametre ( liste issue d'un control ListBox ) je me suis inspiré de cette source http://www.csharpfr.com/codes/THREADS-AVEC-PARAMETRES-NET-NET_28268.aspx
Mais j'ai toujours une erreur de cross-thread à la compilation, j'aimerais faire un code jolie et pas desactivé tout betement cette erreur

Voici le code qui lance le thread secondaire :
<hr size="2" width="100%" />Thread t = new Thread(new ParameterizedThreadStart(go));
                t.Start(listeDico.SelectedItems);
<hr size="2" width="100%" />
et voici la fonction ( mon thread secondaire ) :
<hr size="2" width="100%" />void go(object arg)
        {

            ListBox.SelectedObjectCollection di = (ListBox.SelectedObjectCollection)arg;
            for (int i = 0; i < di.Count; i++)
            {
                MessageBox.Show(di[i].ToString());
            }
        }
<hr size="2" width="100%" />Merci d'avance pour votre aide.

6 réponses

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
1 janv. 2007 à 13:05
Hum oui je me suis un peu mélanger les pinceaux.
Pour la copie, tu peux notamment passer par la méthode CopyTo.

/*
coq
MVP Visual C#
CoqBlog
*/
3
taupe4 Messages postés 91 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 17 avril 2008 1
31 déc. 2006 à 22:26
essaie de faire une copie de la collection, il se peut que ça soit du au fait que la ListBox est STA.

Enjoy
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
1 janv. 2007 à 12:36
J'ai modifié le code de création du thread en :
<hr />

Thread t =
new
Thread(
new
ParameterizedThreadStart(go));

object arg = listeDico.SelectedItems;t.Start(arg);

<hr />

Mais toujours même erreur
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
1 janv. 2007 à 12:57
Salut,

SelectedObjectCollection étant de type référence, tu n'as pas effectuer de copie avec ton code précédent.
Pour ce qui concerne les opérations cross-thread, tu peux commencer avec le tuto de Mx.

/*
coq
MVP Visual C#
CoqBlog
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
1 janv. 2007 à 12:59
Salut,

Je me suis dirigé en premier vers cet article mais le probleme c'est qu'il montre comment changé des valeurs entre thread mais pas comment faire passer des variables
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
1 janv. 2007 à 14:10
J'ai resolut mon probleme : merci à tous

voici comment j'appelle le thread
<hr />string

[] array =
new
string[listeDico.SelectedItems.Count];listeDico.SelectedItems.CopyTo(array, 0);

t.Start(array);

<hr />
0
Rejoignez-nous