La collection a été modifiée ; l’opération d’énumération ne peut pas s’exécuter
Ce qui se passe probablement, c’est que SignalData modifie indirectement le dictionnaire subscribers sous le capot pendant la boucle, ce qui mène à ce message. Vous pouvez le vérifier en changeant
foreach(Subscriber s in subscribers.Values)
Par
foreach(Subscriber s in subscribers.Values.ToList())
Si j’ai raison, le problème disparaîtra.
L’appel à subscribers.Values.ToList() copie les valeurs de subscribers.Values dans une liste séparée au début du foreach. Rien d’autre n’a accès à cette liste (elle n’a même pas de nom de variable !), donc rien ne peut la modifier à l’intérieur de la boucle.