Цикл ForEach в очереди, генерирующий InvalidOperationException

Я не использовал Queues раньше, так что Возможно, мне не хватает чего-то очевидного. Я пытаюсь перебрать Queue следующим образом (каждый кадр):

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

Когда враг умирает, пользовательский элемент управления врагом вызывает событие, которое я подписался, и я делаю это (первый враг в очереди удален по назначению):

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();
}

Однако после вызова метода Dequeue я получаю InvalidOperationException в foreach Когда я использую вместо этого Peek , ошибок нет, поэтому он должен что-то делать с изменением самой очереди, поскольку Dequeue удаляет объект. Мое первоначальное предположение заключается в том, что он жалуется, что я изменяю коллекцию, которая повторяется Enumerator, но удаление из очереди выполняется вне цикла?

Есть идеи, что могло вызвать эту проблему?

Спасибо

12
задан Alex Aza 4 June 2011 в 01:52
поделиться