Accueil > Forum > > > > "sauter par dessus" un foreach??
"sauter par dessus" un foreach??
lundi 13 février 2006 à 19:17:32 |
"sauter par dessus" un foreach??

immerczeck
|
Bonjour! j'ai de nouveau un petit problème, mais j'avoue, celui-là, je sais plus quoi faire : est ce qu'il pourrait y avoir une raison pour que le programme ignore une énumération foreach? Je m'explique : j'ai une boucle foreach qui énumère les éléments d'une ArrayList.Synchronized (encore et toujours :p), elle même dans une boucle infinie, et dans un bloc d'instructions conditionnelles. Les éléments de l'ArrayList sont susceptibles d'être modifiées à chaque boucle. A chaque fois que j'arrive à cet endroit du programme, j'obtiens un résultat aberrant. Je me suis penché sur le code, et, ne trouvant rien, j'ai mis des points d'arrêt aux endroits stratégiques et j'ai exécuté le programme. Surprise : la première fois que la condition est vérifiée, tout se passe bien, j'arrive au point d'arrêt foreach. Mais les fois suivantes, le programme fait comme s'il ignorait l'instruction, et le programme se bloque.
Avez vous déjà rencontré ce genre de problèmes? Est-ce une restriction des ArrayList? J'espère que quelqu'un pourra me donner une réponse, je n'ai rien trouvé qui ressemble à ce problème...
Merci d'avance
Immerczeck
|
|
lundi 13 février 2006 à 19:23:23 |
Re : "sauter par dessus" un foreach??

coq
|
Salut,
Si l'execution du code du corps de l'instruction foreach ne se fait pas, c'est que la collection est probablement vide.
/* coq MVP Visual C# */
|
|
lundi 13 février 2006 à 19:27:22 |
Re : "sauter par dessus" un foreach??

immerczeck
|
ce n'est pas le corps de l'instruction foreach qui ne s'exécute pas, c'est l'instruction foreach (enfin sauf si, lorsque je mets un point d'arrêt à la ligne du foreach, il pointe sur le corps)
|
|
lundi 13 février 2006 à 19:30:01 |
Re : "sauter par dessus" un foreach??

immerczeck
|
pardon j'ai oublié de dire que le thread s'arrête après cela, j'ai mis un autre point d'arrêt après les instructions conditionnelles et le programme ne s'y arrête plus passée la première boucle.
|
|
lundi 13 février 2006 à 19:36:57 |
Re : "sauter par dessus" un foreach??

immerczeck
|
ha ui heu tout cela sert à vérifier si l'ArrayList ne contient pas un objet dont l'une des propriétés est égale à une valeur.(je ne sais pas si je m'exprime correctement). Je teste donc dans le foreach si cl.name=="valeur". S'il existe un moyen simple de tester directement la présence de la chaîne dans les propriétés des éléments de l'arraylist, ce serait aussi bien, mais je n'ai trouvé que la méthode Contains, qui traite l'objet entier.
|
|
lundi 13 février 2006 à 22:43:55 |
Re : "sauter par dessus" un foreach??

coq
|
Une solution serait d'implémenter ta propre classe de collection fortement typée et de traiter le test de cette propriété dans l'implémentation de ta méthode Contains. En gros tu déplaces ta boucle :-) La seule différence étant que tu feras un seul appel de méthode au lieu de c/c ta boucle si tu viens à maintenir une autre liste de clients (c'est bien ça ?) dans ton programme.
/* coq MVP Visual C# */
|
|
vendredi 17 février 2006 à 19:24:41 |
Re : "sauter par dessus" un foreach??

immerczeck
|
merci de ta réponse coq! désolé pour ma longue absence, de graves pb d'ordi... :p sinon, est ce que tu pourrais me donner un exemple? Je sais je sais mais je débute :p
|
|
vendredi 17 février 2006 à 21:59:12 |
Re : "sauter par dessus" un foreach??

immerczeck
|
en fait le problème ne concernait absolument pas le foreach ;) apparemment cela concerne une instruction receive qui fait planter tout le programme... je vais essayer de faire dans l'asynchrone pour régler ça, mais j'ai encore jamais fait, alors je sais pas si ça va donner quelque chose
|
|
vendredi 17 février 2006 à 22:25:12 |
Re : "sauter par dessus" un foreach??

coq
|
Je parlais de quelquechose de ce genre :
public class ClientCollection : CollectionBase { public ClientCollection() { }
public int Add(Client cl) { return base.InnerList.Add(cl); }
public void Remove(Client cl) { base.InnerList.Remove(cl); }
public Client this[int index] { get { return base.InnerList[index] as Client; } }
public Client this[string name] { get { for ( int i=0; i<base.InnerList.Count; i++ ) { Client current = base.InnerList[i] as Client; if ( current.Name == name ) return current; }
return null; } }
public bool Contains(Client cl) { return base.InnerList.Contains(cl); }
public bool Contains(string name) { for ( int i=0; i<base.InnerList.Count; i++ ) { if ( (base.InnerList[i] as Client).Name == name ) return true; }
return false; } }
/* coq MVP Visual C# */
|
|
samedi 18 février 2006 à 00:17:31 |
Re : "sauter par dessus" un foreach??

immerczeck
|
merci pour le code coq!! sinon, aurais-tu une idée de la raison pour laquelle un Receive peut se bloquer en attente? comme si la socket était occupée ou quelque chose de ce genre...car c'est cela qui faisait en réalité planter mon programme, et je préfère ne pas poser un autre sujet pour ne pas encombrer le forum
|
|
Cette discussion est classée dans : boucle, programme, arraylist, sauter, foreach
Répondre à ce message
Sujets en rapport avec ce message
sortir d'une boucle foreach [ par yohan49 ]
jsute une kestion toute beteje cherche comment on sort d'une boucleen vb.net : exit foren C# : ????
une boucle while dans un service [ par Dr_shaman ]
Bonjour, juste une petite question ? J'ai fais un programme en winform C#. Ce programme comporte une boucle qui boucle à l'infini car j'attends des
Boucles foreach imbriquées [ par Nawalll ]
Bonjour tout le monde, J'ai un problème qui me rend dingue!!! voici mon programme: Code : ArrayList petiteliste=new ArrayList (); Array
c# ArrayList [ par ghano81 ]
salut tout le monde jé un ptit probleme avec les listes en c# ,je ne sais pas comment les utiliser par contre javais pas c
Lancement et Création de Thread [ par skyline86 ]
Bonjour, je viens vers vous car j'ai un problème avec mon programme en C#.Je vous explique d'abord de le but du programme :Ce programme doit pouvoir é
Question débutant - Boucle qui ralenti [ par jfleking ]
Bonjour tout le monde. Ma question pourrait être simple pour quelque uns d'entre vous mais pour moi c'est un vrai casse tête. J'ai créer un petit pro
Attendre la suppression d'un fichier [ par deejay2221 ]
BonjoursDans mon programme je créer un fichier .txt. Je dois faire une pause tant que le fichier n'a pas été lu par un autre programme et supprimé. Lo
Mon programme ignore certaines instructions [ par LilBisk ]
Bonjour à tous! J'ai un soucis ... Mon programme a un squelette qui ressemble à ça : [code=cs] static void Main(string[] args) { Procédure BlaB
Mon sous-programme ne répond pas lors de l'appel [ par LilBisk ]
Tout est dans le titre :( Le sous-programme en question : [code=cs] /* Il renvoie la valeur de la frequence choisie par une entreprise à partir de l
Probleme textbox [ par Byrong ]
Bonjour voila apres avoir utilisé pendant un petit moment vb.net, java J'ai décidé de tenter le C# Et j'ai une question Comment peut-on manipuler l
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|