2010-02-19 6 views
0

J'utilise le service WCf dans mon application Windows ... J'ai l'exception dans mon client Lorsque j'essaie d'ajouter des éléments dans Listbox en utilisant ForEach Loop ... L'exception est "Collection a été modifiée enumuration pas exécuter ". Comment vais-je résoudre cette exception ....Exception dans le client WCF

Et mon code est,

  foreach (ClsPC pc in iclsobj.GetPC()) 
      { 
      if (listBox1.Items.Count == 0) 
      { 
      listBox1.Items.Add(pc.IPAddress); 
      } 
      else 
      { 
      for (int i = 0; i < listBox1.Items.Count; i++) 
      { 
      if (!listBox1.Items[i].ToString().Contains(pc.IPAddress)) 
      { 
      listBox1.Items.Add(pc.IPAddress); 
      } 
      } 
     } 
     } 
client.Close(); 

client = null;

}

Répondre

3

Vous essayez de modifier la collection en vous zone de liste en boucle à travers elle (la boucle intérieure), ce qui est pas vraiment une idée chaude. Vous feriez mieux de réaliser ceci dans vos données de sélection (à savoir un PC distinct obtenir), ou de limiter la liste retournée, peut-être quelque chose comme:

var pcs = iclsobj.GetPC().Select(pc => new { IPAddress = pc.IPAddress}).Distinct(); 

Et puis juste lier votre ListBox à ce sujet.

+0

Merci pour votre code .... j'ai essayé votre code mais j'ai eu la ligne différente ... (ie) System.Linq.Enumerable + d__7a'1 [<> f__AnonymousType0'1 [System.String] ] maintenant comment puis-je obtenir cette adresse IP – Suryakavitha

+0

maintenant comment puis-je ajouter que pcs dans la liste – Suryakavitha

+0

Je ne peux pas faire beaucoup de sens du texte dans votre premier commentaire, mais comme pour la seconde, c'est aussi simple que comment vous ajoutez n'importe quel énumérable à une collection. Personnellement, je définirais votre liste filtrée comme la source de données, puis appelez databind ... – Paddy