c# - 队列 ForEach 循环抛出 InvalidOperationException

标签 c# .net silverlight queue invalidoperationexception

我没用过Queues<T>之前的任何真实程度,所以我可能会遗漏一些明显的东西。我正在尝试遍历 Queue<EnemyUserControl>像这样(每一帧):

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 方法之后,我得到一个 InvalidOperationExceptionforeach 上环形。当我使用 Peek相反,没有错误,因此它必须对 Queue 本身的更改做一些事情,因为 Dequeue 会删除对象。 我最初的猜测是它提示我正在修改一个由枚举器迭代的集合,但是出列是在循环外执行的?

有什么可能导致此问题的想法吗?

谢谢

最佳答案

我知道这是一篇旧帖子,但以下内容呢:

var queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);

while (queue.Count > 0)
{
  var val = queue.Dequeue();
}

干杯

关于c# - 队列 ForEach 循环抛出 InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6234087/

相关文章:

.net - 使用 HttpWebRequest (.NET) 处理身份验证

c# - 如何找到不可见的菜单项?

c# - 让 Mono 和 Firebird Embedded 在 Linux 上运行

c# - DLL 项目 - 知道哪个环境调用了它吗? (网络/窗口/cmd)

java - WCF自动生成的WSDL

c# - Silverlight + 位图缓存 : can't get it to work

c# - 如何以阻塞/同步方式下载文件?

c# - 为什么将 RichTextBox 上的 XAML 属性设置为此值会使 Silverlight 崩溃?

c# - 动态 linq 查询不工作

c# - 从大型 OpenAPI 文档或使用 NewtonSoft 获取 JSON 模式并解析 refs