Partager un ArrayList dans deux threads

Résolu
immerczeck Messages postés 27 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 28 juin 2008 - 23 déc. 2005 à 18:04
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 25 déc. 2005 à 00:09
Bonjour!

Voilà tout est dans le titre. Je viens tout juste de me mettre au c#, et je commence par un petit prog de serveur de messages.

J'ai une classe Form1, avec les méthodes main, Ecoute et gere. Je veux
que Ecoute et gere puissent accéder à une ArrayList qui contient les
infos des clients.

J'ai cru comprendre que les délégués faisait quelque chose dans ce
genre mais je n'ai pas très bien compris comment on les utilisait.



Merci d'avance

8 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
23 déc. 2005 à 21:16
Salut,

La méthode dont tu parles est utilisée pour des contrôles, pour l'utilisation de Control.Invoke. Voir le tuto (de Mx, si je me souviens bien) à ce sujet.
Ce qui n'est pas le cas d'ArrayList.
Dans ton cas, la réponse est dans la doc de la classe :
"ArrayList peut prendre en charge plusieurs opérations de lecture simultanées, tant que la collection n'est pas modifiée. Afin de garantir la sécurité des threads de ArrayList, toutes les opérations doivent être effectuées par l'intermédiaire du wrapper retourné par la méthode Synchronized."

/*
coq
MVP Visual C#
*/
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
23 déc. 2005 à 21:45
C'était bien de Mx ^^ : OPÉRATIONS CROSS THREADS - UTILISATION DES APPELS ASYNCHRONES

/*
coq
MVP Visual C#
*/
0
immerczeck Messages postés 27 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 28 juin 2008
23 déc. 2005 à 21:55
Merci de votre prompte réponse.
Effectivement j'avais vu ce tuto mais j'arrivais pas à l'adapter à ma situation... on comprend pourquoi XD
J'ai effectué toutes les modifications nécessaires, remplacé clients par ArrayList Synchronized.
Mais là je tombe sur une erreur "[Mon Programme] ne possède pas de point d'entrée défini."
Une idée d'où cela pourrait provenir?
0
immerczeck Messages postés 27 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 28 juin 2008
23 déc. 2005 à 22:04
Apparemment c'est ma fonction Main() qui clochait. J'avais enlevé le static pour pouvoir faire référence aux méthodes de mes threads. Chose qu'apparemment, il ne faut pas faire :p
J'ai rectifié en lancant mes threads dans InitialiseComponent() et le prog se lance sans accroc.

Merci de votre aide!

PS: J'avais fait une autre app entretemps en contournant le problème : j'avais fusionné tant bien que mal les deux threads, mais cette solution est de loin la plus facile !
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
23 déc. 2005 à 22:04
Un programme doit possèder un point d'entrée, en l'occurence la méthode Main.
Vérifie dans les propriétés de projet qu'un point d'entrée est bien sélectionné : regarde l'option "Objet de démarrage".

/*
coq
MVP Visual C#
*/
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
23 déc. 2005 à 22:05
Oups, trop long à taper ^^

/*
coq
MVP Visual C#
*/
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
24 déc. 2005 à 23:49
Merci pour la pub coq ;)
Et une petite pensée pour tes amis dindes et chapons qui passeront pas l'année :/

Mx
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 déc. 2005 à 00:09
Oui, c'est chaque année la même déchirure mélée d'un soupçon de régal...bizarre comme sentiment

/*
coq
MVP Visual C#
*/
0
Rejoignez-nous