Maison > développement back-end > C++ > Comment corriger la 'collection a été modifiée; l'opération d'énumération peut ne pas exécuter l'erreur' dans WCF?

Comment corriger la 'collection a été modifiée; l'opération d'énumération peut ne pas exécuter l'erreur' dans WCF?

Linda Hamilton
Libérer: 2025-02-02 03:56:08
original
983 Les gens l'ont consulté

How to Fix the

Le dépannage de la "collection a été modifié; l'opération d'énumération ne peut pas exécuter une erreur" dans WCF

La "collection frustrante a été modifiée; l'opération d'énumération peut ne pas exécuter" l'erreur disparaît souvent lors du débogage, ce qui rend le diagnostic difficile. Cet article examine un scénario de serveur WCF spécifique et propose des solutions.

Le problème se pose dans un service Windows à l'aide d'un dictionnaire pour suivre les abonnés des événements de données. La suppression de l'ID d'un client (désinscription) provoque parfois la méthode NotifySubscribers pour lancer cette erreur.

Le coupable probable est un rappel, tel que SignalData, modifiant le dictionnaire d'abonné pendant la boucle NotifySubscribers. Pour résoudre ce problème, envisagez de modifier la boucle foreach:

Code d'origine:

foreach(Subscriber s in subscribers.Values)
Copier après la connexion

Code modifié:

foreach(Subscriber s in subscribers.Values.ToList())
Copier après la connexion

En créant une copie du subscribers.Values en utilisant ToList(), l'énumération fonctionne sur un instantané de l'état du dictionnaire au début de la boucle. Toute modification ultérieure du dictionnaire d'origine n'affectera pas l'énumération, éliminant ainsi l'erreur si le rappel SignalData est la source du problème. Cela isole la boucle des changements externes, assurant une exécution en douceur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal