File d'attente de boucle ForEach jeter InvalidOperationException

Je n'ai pas utilisé Queues<T> pour tout réel degré avant, donc j'ai peut-être raté quelque chose d'évident. Je suis en train de parcourir un Queue<EnemyUserControl> comme ceci (toutes les images):

foreach (var e in qEnemy)
{
     //enemy AI code
}

Quand un ennemi meurt, l'ennemi de contrôle de l'utilisateur soulève un événement que j'ai souscrit et je le fais (le premier ennemi dans la file d'attente est supprimé par la conception):

void Enemy_Killed(object sender, EventArgs e)
{      
     qEnemy.Dequeue();

     //Added TrimExcess to check if the error was caused by NULL values in the Queue (it wasn't :))
     qEnemy.TrimExcess();
}

Cependant, après la Résorption de la méthode est appelée, je reçois un InvalidOperationException sur le foreach boucle. Lorsque j'utilise Peek au lieu de cela, il n'y a pas d'erreurs, donc il a de faire quelque chose avec l'évolution de la File d'attente depuis la file d'attente supprime l'objet.
Ma première hypothèse est que c'est de se plaindre que je suis à la modification d'une collection qui est itérée par l'agent Recenseur, mais la file d'attente est effectuée en dehors de la boucle?

Les idées de ce que pourrait être l'origine de ce problème?

Grâce

Vous devez utiliser while(queue.Any()) queue.Dequeue();

OriginalL'auteur keyboardP | 2011-06-04