[.NET2] Passage d'argument à un thread [Résolu]

iow4
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
Dernière intervention
2 novembre 2008
- 31 déc. 2006 à 21:27 - Dernière réponse : iow4
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 1 janv. 2007 à 13:05
3
Merci
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
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_coq
taupe4
Messages postés
94
Date d'inscription
dimanche 16 avril 2006
Dernière intervention
17 avril 2008
- 31 déc. 2006 à 22:26
0
Merci
essaie de faire une copie de la collection, il se peut que ça soit du au fait que la ListBox est STA.

Enjoy
Commenter la réponse de taupe4
iow4
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
Dernière intervention
2 novembre 2008
- 1 janv. 2007 à 12:36
0
Merci
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
Commenter la réponse de iow4
cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 1 janv. 2007 à 12:57
0
Merci
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
*/
Commenter la réponse de cs_coq
iow4
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
Dernière intervention
2 novembre 2008
- 1 janv. 2007 à 12:59
0
Merci
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
Commenter la réponse de iow4
iow4
Messages postés
303
Date d'inscription
samedi 22 octobre 2005
Dernière intervention
2 novembre 2008
- 1 janv. 2007 à 14:10
0
Merci
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 />
Commenter la réponse de iow4

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.